Formularprüfung - Formulardaten an MySQL übergeben
Autor
Flitze
Klicks 113010
Keywords:
Formulare auswerten, Formulare benutzen, Formulardaten überprüfen, $_POST, Affenformular, Daten erneut eintragen, Formular, HTML, MYSQL, Übergabe, Daten
Klicks 113010
Rating für Formularprüfung
5.9 von 10
Bewertungen36
Stand
12.06.2013
5.9 von 10
Bewertungen36
Keywords:
Formulare auswerten, Formulare benutzen, Formulardaten überprüfen, $_POST, Affenformular, Daten erneut eintragen, Formular, HTML, MYSQL, Übergabe, Daten
Breadcrumb:
Tutorials » Formularprüfung » Formularprüfung - Formulardaten an MySQL übergeben
5. Formulardaten an MySQL übergeben
[ADSENSE_LINE]Formulare werden häufig im Zusammenhang mit MySQL-Datenbanken benutzt, wenn Daten vom User eingegeben werden müssen. Das ist z.B. bei MySQL basierten
Gästebüchern und Foren der Fall. In diesem Kapitel stelle ich zwei MySQL-Queries vor und gebe Beispiele zu deren Verarbeitung mit einem Formular. Diese zwei Queries sind SELECT und INSERT. Bei den Beispielen gehe ich von einer bestehenden Datenbankverbindung aus.
Jeder Query ist dabei folgendermaßen strukturiert
PHP:
<?php
$sql = "BEFEHL
Daten,
Daten
EXPRESSION_1
Daten,
Daten
EXPRESSION_2
Daten,
Daten
...
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
?>
Der Grundbefehl (SELECT, INSERT) und die Expressions (VALUES, WHERE) werden immer an der gleichen Stelle eingerückt und werden groß geschrieben. Die dazu gehörigen Daten, Tabellennamen und Spaltennamen werden noch weiter aber ebenfalls untereinander eingerückt. Der ganze Query wird als String in der Variablen $sql gespeichert. Mit der Funktion mysql_query() führt man einen MySQL Query aus. Liegt ein syntaktischer Fehler vor, bricht das Skript die Abarbeitung durch die Funktion die() ab und gibt den Query zusammen mit einer Fehlermeldung aus. Da erkennt man auch schon, warum ich den Query in einer Variable speichere und nicht direkt mit mysql_query() ausführe. Die Fehlermeldung kann eine Zeilenangabe enthalten, die bei der späteren Fehlersuche behilflich ist und dadurch, dass der Query auch mit ausgegeben wird, sehen wir direkt, mit welchen Daten der Query aufgerufen wurde und finden so ebenfalls schneller einen etwaigen Fehler. Das "Resultat" dieses Querys wird in $result gespeichert, so dass wir falls nötig, später darauf zugreifen können.
SELECT
Nehmen wir an, wir haben ein Formular mit einer Dropdownliste, aus der wir nun einen User auswählen können und das Formular dann die ID dieses Users an ein verarbeitendes Skript übergibt. Mit dieser ID wird dann der Datensatz dieses Users gesucht und dessen Name und Email-Adresse werden ausgewählt.
Das entsprechende Fomular lautet dann:
PHP:
<?php
echo "<form".
" action=\"$_SERVER['PHP_SELF']\"".
" method=\"$_POST\"".
" accept-charset=\"ISO-8859-1\">\n";
echo "<select name=\"ID\">";
echo " <option value=\"0\">Bitte User auswählen</option>\n";
echo " <option value=\"1\">Flitze</option>\n";
echo " <option value=\"2\">Hirnhamster</option>\n";
echo " <option value=\"3\">Wochenendpanda</option>\n";
echo "</select>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Auswählen\">\n";
echo "</form>\n";
?>
Die Daten werden durch $_SERVER['PHP_SELF'] an das gleiche Skript geschickt, in dem auch das Formular definiert wurde. In $_POST['ID'] steht dann die ID des Users, dessen Daten wir suchen. Um die Daten von dem Formular an MySQL zu übergeben, müssen wir $_POST['ID'] an der entsprechenden Stelle einbinden. Ich erinnere nochmal daran, das Query als String in $sql gespeichert wird und das Werte, die in einen MySQL Query gesetzt werden, in Single Quotes ( ' ) stehen sollten. Außerdem achten wir natürlich auf SQL-Injection und verwenden mysql_real_escape_string().
Daraus ergibt sich dann folgender Befehl:
PHP:
<?php
// Prüfen, ob das Formular abgeschickt und ein Benuter ausgewählt wurde
if(isset($_POST['submit']) AND $_POST['submit']=='Auswählen' AND
isset($_POST['ID']) AND $_POST['ID']!='0'){
$sql = "SELECT
Name,
Email
FROM
User
WHERE
ID = '".mysql_real_escape_string($_POST['ID'])."'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
}
else {
// Formular anzeigen
}
// Erläuterungen
// Variable definieren und String mit " öffnen
$sql = "SELECT // Befehl
Name, // Tabellenspalte 1
Email // Tabellenspalte 2
FROM // FROM Expression
User // Tabelle
WHERE // WHERE Expression
// '". Single Quote öffnen und String beenden um die Variable einzufügen
ID = '".mysql_real_escape_string($_POST['ID'])."'
// ."' String wieder beginnen und Single Quotes schließen
";
// String mit " schließen und Zeile mit ; beenden
// Query ausführen und Resultat speichern
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
?>
Angenommen, wir wählen den User "Flitze" aus, dann wird die 1 als ID übergeben. Der Query sieht dann so aus:
PHP:
<?php
$sql = "SELECT
Name,
Email
FROM
User
WHERE
ID = '1'
";
$result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
?>
Das wars eigentlich auch schon. Die Daten kommen aus einem Formular und werden von einem Skript verarbeitet.
INSERT
Das Einfügen von Daten funktioniert prinzipiell genauso wie eine SELECT-Abfrage. Beispiel dazu:
PHP:
<?php
if(isset($_POST['submit']) AND $_POST['submit']=='Speichern'){
$sql = "INSERT INTO
User
(
Name,
Email
)
VALUES
(
'".mysql_real_escape_string($_POST['Name'])."',
'".mysql_real_escape_string($_POST['Email'])."'
)
";
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
}
else {
echo "<form".
" action=\"$_SERVER['PHP_SELF']\"".
" method=\"$_POST\"".
" accept-charset=\"ISO-8859-1\">\n";
echo "<input type=\"text\" name=\"Name\">\n";
echo "<input type=\"text\" name=\"Email\">\n";
echo "<input type=\"submit\" name=\"submit\" value=\"Speichern\">\n";
echo "</form>\n";
}
?>
Der User kann seinen Namen und Seine Email-Adresse eingeben. Diese werden beim Drücken vom submit-Button in der Datenbank gespeichert.
Zurück zur vorigen Seite:
Formularprüfung - Daten eintragen Weiter zur nächsten Seite:
Formularprüfung - Typischer Formularaufbau, Affenformular