template

Index :: PHP/MySQL :: Formular: Datensatz hinzufügen

Das Beispiel fügt einen neuen Datensatz in die Tabelle 'benutzer' ein.
Hierzu werden 'Vorname', 'Nachname' und 'PersNr' eingegeben und abgeschickt. Danach wird noch einmal die Eingabe und eine entsprechende Meldung angezeigt.
Am POST-Parameter 'mode' erkennt das Skript, ob es von außen oder von sich selbst aufgerufen wurde.
Die Eingaben werden formatiert und geprüft, bevor sie in die Datenbank kommen: Kritische (einfache) Hochkommas in Strings werden per str_replace() in Accents umgewandelt. Ganze Zahlen werden per intval() von eventuellen Nachkommastellen bereinigt.
Beim INSERT sind Strings von einfachen Hochkommas umschlossen, während Zahlen pur übergeben werden.
In form.action wird der Eigenname des Skripts mittels basename($_SERVER['PHP_SELF']) eingetragen.
Im Formular werden Vorname und Nachname per htmlentities() ausgegeben, damit Umlaute korrekt angezeigt werden.
Php Einleitung
include('glob.inc.php'); $db = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); //---- Verbindung zur Datenbank mysql_select_db(DB_NAME); //---- Parameter prüfen if (intval($_POST['mode'])) { //==== Formular verarbeiten //---- Eingaben formatieren $vname = str_replace("'", "´", trim($_POST['vname'])); $nname = str_replace("'", "´", trim($_POST['nname'])); $persnr = intval($_POST['persnr']); //---- Eingaben prüfen if (!strlen($vname)) $msg = "Vorname fehlt!"; else if (!strlen($nname)) $msg = "Nachname fehlt!"; else if ($persnr<10000) $msg = "PersNr zu klein!"; else if ($persnr>19999) $msg = "PersNr zu gro&szlig;!"; // if (!strlen($msg)) { //---- Eingaben ok $query = "INSERT INTO benutzer SET Vorname='$vname', Nachname='$nname', PersNr=$persnr"; if (mysql_query($query)) { $msg = "Datensatz wurde hinzugef&uuml;gt (ID: ". mysql_insert_id() .")"; } else $msg = "Datensatz konnte nicht hinzugef&uuml;gt werden!" } } else { //==== Erstaufruf $msg = "Bitte alle Felder ausf&uuml;llen:"; }
Weiter unten, im BODY, das Formular:
<?php echo $msg; ?><br> <br> <form action='<?php echo basename($_SERVER['PHP_SELF']); ?>' method='post'> Vorname: <input name='vname' type='text' value='<?php echo htmlentities($vname); ?>'><br> Nachname: <input name='nname' type='text' value='<?php echo htmlentities($nname); ?>'><br> PersNr: <input name='persnr' type='text' value='<?php echo $persnr; ?>'> [10000...19999]<br> <input type='hidden' name='mode' value='1'> <input type='submit' value='Hinzuf&uuml;gen'> </form>
Mittels mysql_insert_id() kann der neu entstandene Primärschlüssel erfragt werden, den man eventuell für weitere Queries braucht (z.B. um die ID des gerade angelegten Datensatzes in einer anderen Tabelle zu vermerken).

Index :: PHP/MySQL


template