![]() |
Mysql mit PHP und Formular
Hallo,
ich steh grad vor einem deftigem Problem, ich dazu sagen ich hab 0 (in worten null!) Ahnung von irgendwelchen webbasierten Sprachen. Das Problem ist folgendes, ein sehr guter Freund von mir steht vor dem Problem das er im eigenen Lan (Netwerkfestplatte) eine Menge an Treibern rumfliegen hat (liegen alle als Ziparchiv vor) das Problem ist das wiederfinden dieser Treiber (Treiber für Mainboards diverser Hersteller) Jetzt hab ich mir folgendes überlegt, erst einmal hab ich mittels Xampp einen internen Webblog gebaut (Wordpress) welcher nur im Lan laufen wird wegen der Sicherheit :-) dort soll es eine spezielle Seite geben über die man ein Suchformluar ausfüllen kann, das Formular ist folgendermaßen aufgebaut: 1. Sockel (z.B. 939 oder AM2) 2. Hersteller (z.B. Asus, Gigabyte usw.) 3. Bezeichnung (z.B. ALiveNF5SLI) 4. Submit Button Im Mysql Server gibt es pro Hersteller eine Tabelle die alle gleich aussehen, Felder der Tabellen sind: 1. ID 2. Sockel 3. Bezeichnung 4. Bemerkung 5. Url 6. OperatingSystem Url ist der lokale Pfad auf das Verzeichnis der Netzwerkplatte für den Treiber. Nachdem ausfüllen des Formulars und klick auf den Submit Button wird unterhalb des Formulars eine Tabelle mit dem ResultSet der Suchanfrage gefüllt. Mein Problem ist aufgrund der nichvorhandenen Kenntnisse im Bereich Webprogrammierung mit PHP und HTML, Javascript usw. das folgende Probleme auftreten: 1. Beim ersten Aufruf der Seite gibt es einen SQL Query Fehler (meine Vermutung ist das eine Variable zu diesem Zeitpunkt nicht gefüllt ist, beim erstmaligem klick auf Submit ist dann alles OK.) 2. Dem ganzen Fehlt noch eine gewissen Logik wie z.B. die Überprüfung der durch den User gemachten Eingaben im Formular, wenn jemand z.B. eine Suche ausführen will, die den Sockel und den Hersteller beinhaltet jedoch nicht die Bezeichnung, dementsprechend muss das Query ja dann dynamisch gebaut werden. Oder falls der User gar nichts auswählt und einfach Submit klickt,dann sollte unterhalb des Formulars halt eine Bemerkung ala: 'Bitte folgende Felder ausfüllen erscheinen' vielleicht wäre das ja in einem seperaten Div möglich? Ich zeig mal was ich bisher hab vielleicht steigt ja jemand durch? Code für die Table unterhalb des Suchformulars (ZebraTable):
Code:
Die eigentliche Routine zum Connect auf den Mysql Server (Table) usw...:
<script type="text/javascript">
var Event = { add: function(obj,type,fn) { if (obj.attachEvent) { obj['e'+type+fn] = fn; obj[type+fn] = function() { obj['e'+type+fn](window.event); } obj.attachEvent('on'+type,obj[type+fn]); } else obj.addEventListener(type,fn,false); }, remove: function(obj,type,fn) { if (obj.detachEvent) { obj.detachEvent('on'+type,obj[type+fn]); obj[type+fn] = null; } else obj.removeEventListener(type,fn,false); } } function $() { var elements = new Array(); for (var i=0;i<arguments.length;i++) { var element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); if (arguments.length == 1) return element; elements.push(element); } return elements; } String.prototype.trim = function() { return this.replace(/^\s+|\s+$/,""); } function addClassName(el,className) { removeClassName(el,className); el.className = (el.className + " " + className).trim(); } function removeClassName(el,className) { el.className = el.className.replace(className,"").trim(); } var ZebraTable = { bgcolor: '', classname: '', stripe: function(el) { if (!$(el)) return; var rows = $(el).getElementsByTagName('tr'); for (var i=1,len=rows.length;i<len;i++) { if (i % 2 == 0) rows[i].className = 'alt'; Event.add(rows[i],'mouseover',function() { ZebraTable.mouseover(this); }); Event.add(rows[i],'mouseout',function() { ZebraTable.mouseout(this); }); } }, mouseover: function(row) { this.bgcolor = row.style.backgroundColor; this.classname = row.className; addClassName(row,'over'); }, mouseout: function(row) { removeClassName(row,'over'); addClassName(row,this.classname); row.style.backgroundColor = this.bgcolor; } } window.onload = function() { ZebraTable.stripe('mytable'); } </script> <style type="text/css"> body { background: #fff; } table { border-collapse: collapse; width: 50%; margin: 24px; font-size: 1.1em; } th { background: #3e83c9; color: #fff; font-weight: bold; padding: 2px 11px; text-align: left; border-right: 1px solid #fff; line-height: 1.2; } td { padding: 6px 11px; border-bottom: 1px solid #95bce2; vertical-align: top; } td * { padding: 6px 11px; } tr.alt td { background: #ecf6fc; } tr.over td, tr:hover td { background: #bcd4ec; } </style>
Code:
Das Suchformular:
<?php
include("dbconnect.php>"); $global_dbh = mysql_connect($hostname, $username, $password) or die("Could not connect to database"); mysql_select_db($db, $global_dbh) or die("Could not select database"); function display_db_query($query_string, $connection, $header_bool, $table_params) { // perform the database query $result_id = mysql_query($query_string, $connection) or die("display_db_query:" . mysql_error()); // find out the number of columns in result $column_count = mysql_num_fields($result_id) or die("display_db_query:" . mysql_error()); // Here the table attributes from the $table_params variable are added print("<TABLE width=\“50%\“ id=mytable $table_params >\n"); // optionally print a bold header at top of table if($header_bool) { print("<TR>"); for($column_num = 0; $column_num < $column_count; $column_num++) { $field_name = mysql_field_name($result_id, $column_num); print("<TH>$field_name</TH>"); } print("</TR>\n"); } // print the body of the table while($row = mysql_fetch_row($result_id)) { print("<TR ALIGN=LEFT VALIGN=TOP>"); for($column_num = 0; $column_num < $column_count; $column_num++) { print("<TD>$row[$column_num]</TD>\n"); } print("</TR>\n"); } print("</TABLE>\n"); } function display_db_table($tablename, $socket, $connection, $header_bool, $table_params) { if($socket == "All") { $query_string = "SELECT * FROM $tablename"; } else { $query_string = "SELECT * FROM $tablename WHERE sockel = '$socket'"; } display_db_query($query_string, $connection, $header_bool, $table_params); } ?>
Code:
Durchführen der Suche sowie Füllen der Variablen:
<form action="searchform.php" method="post">
<form name="form1" method="post" action=""> <label>Socket <select name="Socket" id="Socket"> <option value="AM2">AM2</option> <option value="AM2+">AM2+</option> <option value="939">939</option> <option value="All" selected>All</option> </select> </label> <label>Manufacturer <select name="Manufacturer" id="Manufacturer"> <option value="Asrock">Asrock</option> <option value="Abit">Abit</option> <option value="Asus">Asus</option> <option value="Gigabyte">Gigabyte</option> <option value="Msi">Msi</option> </select> </label> <label>Search <input type="submit" name="Search" value="Submit"> </label> </form>
Code:
Viele Grüße
<?php
$table = $_POST['Manufacturer']; $sock = $_POST['Socket']; //$bez = $_POST['bezeichnung']; display_db_table($table, $sock, $global_dbh, TRUE, "border='0'"); ?> Marc |
Re: Mysql mit PHP und Formular
Wenn der Nutzer das erste Mal auf die Seite geht ist das $_POST Array ja noch leer. Du kannst also in deiner Methode display_db_table ein entsprechendes If einbauen (isset($_POST['Manufacturer'])) um zu prüfen, ob du überhaupt ne Suche machen musst.
Die Sollfelder kannst du sowohl auf dem Client (via Javascript) als auch auf dem Server (via PHP) durchführen. Um die Serverprüfung wirst du nicht herum kommen, da du sonst wieder falsche Queries zusammenbastelst. Wenn das nur Quick & Dirty werden soll, würd ich einfach ein String-Array mit den verschiedenen Meldungen füllen ("Geben Sie ein Modell ein"...). In der Ausgabe dann prüfen, ob das Array Einträge enthält. Wenn nein, mach deine Query und gib die Tabelle aus. Wenn ja mach ne Schleife durch das Array und gib die Meldungen aus. Und wenn du es dann ganz ordentlich machen möchtest, musst du deine Suche noch gegen SQL Injections absichern. Da gibt's ne eigene Rubrik auf PHP.net für. |
Re: Mysql mit PHP und Formular
Bahnhof!
Hallo, erstmal vielen Dank für deine Antworten. Nur ich schrub ja ich hab null Plan davon, daher kan ich das nicht wirklich umsetzen was du gepostet hast. Was sql injection angeht ist mir völlig egal, von daher muss da nix gemacht werrden. Es muss halt nur lauffähig sein mehr nicht. Vielleicht könntest Du mir etwas mehr helfen dabei, bzw. ausführlicher vielleicht als Codeergänzung zu meinem Bisherigen damit ich das auchkapiere :-( Viele Grüsse Marc |
Re: Mysql mit PHP und Formular
Wirklich niemand der helfen könnnte? :-(
|
Re: Mysql mit PHP und Formular
Code:
Das sollte den SQL Fehler beim ersten Aufruf verhindern
function display_db_table($tablename, $socket, $connection, $header_bool, $table_params) {
if ((isset($tablename)) && (isset($socket))) { if($socket == "All") $query_string = "SELECT * FROM $tablename"; else $query_string = "SELECT * FROM $tablename WHERE sockel = '$socket'"; display_db_query($query_string, $connection, $header_bool, $table_params); } } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz