template

Index :: PHP/MySQL :: Formular: Datensatz bearbeiten

Das Beispiel aktualisiert einen bestimmten Datensatz der Tabelle 'benutzer'.
Hierzu wird dem Script per GET-Parameter 'uid' die UserID (= Primärschlüssel) übergeben. Im Formular werden 'Vorname', 'Nachname' und 'PersNr' vorbelegt. Nach dem Update wird noch einmal die Eingabe und eine entsprechende Meldung angezeigt.
Am GET-Parameter 'uid' erkennt das Skript, daß es von außen aufgerufen wurde.
Am POST-Parameter 'mode' erkennt das Skript, daß es sich selbst aufgerufen hat.
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 UPDATE sind Strings von einfachen Hochkommas umschlossen, während Zahlen pur übergeben werden.
Beim UPDATE wird die Anweisung LIMIT 1 verwendet, weil ohnehin nur ein einzelner Datensatz betroffen sein kann.
In form.action wird der Eigenname des Skript 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 ($uid = intval($_GET['uid'])) { //==== kommt von außen $query = "SELECT * FROM benutzer WHERE UID=". $uid; if ($row = mysql_query($query)) { //---- Datensatz gefunden $vname = $row[1]; $nname = $row[2]; $persnr = $row[3]; $msg = "Datensatz kann bearbeitet werden:"; } else { //---- unbekannter Datensatz $msg = "Die UID ". $uid ." wurde nicht gefunden!"; $uid = 0; } } else if (intval($_POST['mode'])) { //==== Formular verarbeiten $uid = intval($_POST['uid']); //---- 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 = "UPDATE benutzer SET Vorname='$vname', Nachname='$nname', PersNr=$persnr WHERE UID=$uid LIMIT 1"; if (mysql_query($query)) $msg = "Datensatz wurde aktualisiert"; else $msg = "Datensatz konnte nicht aktualisiert werden!"; } } else $msg = "Falscher Aufruf: GET-Parameter 'uid' fehlt!"; // Falscher Aufruf
Weiter unten, im BODY, das Formular:
<?php echo $msg; if ($uid) { ?><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='2'> <input type='hidden' name='uid' value='<?php echo $uid; ?>'> <input type='submit' value='&Auml;nderungen &uuml;bernehmen'> </form> <?php } ?>

Index :: PHP/MySQL


template