Datenbanken
MySQL

Informatik Johann Penon

Daten in einer Datenbank ändern (update)



Um einen Datensatz in einer Datenbank zu ändern, ist es zunächst notwendig die Werte des Schlüsselfeldes in einem Formular zu erfassen, um diese dann in weiteren Skripten in der entsprechende Datenbank zu ändern. Das Beispiel für ein solches Formular ist wieder auf eine Kundentabelle mit dem Schlüsselfeld "kunr" bezogen.

Wenn Sie die Skripte: "kunden_aendern_formular.htm", "kunden_aendern.php" und "kunden_aendern2.php" verstehen, dann können Sie die folgenden Beschreibungen ignorieren.

Zunächst muss in einem Formular als Benutzungsschnittstelle der Wert des Primärschlüssels abgefragt werden. Der unten aufgeführte Ausschnitt zeigt das Erfassen der Kundennummer als Primärschlüssel der Tabelle Kunden.  

 Kundennummer:
  <input TYPE="text" NAME="kunr" VALUE SIZE="6" MAXLENGTH="6">

Wichtig ist, dass möglichst bei Name der Bezeichner des entsprechenden Tabellenfeldes genommen wird. Dies erleichtert die Lesbarkeit.

Mit dem Abschicken der Daten aus dem Eingabeformular wird ein Skript (hier: "kunden_aendern.php") aufgerufen, welches überprüft, ob der gewünschte Datensatz in der Datenbank enthalten ist, diese ggf. in einem Formular ausgibt oder wenn der Datensatz nicht vorhanden ist, eine Fehlermeldung anzeigt.

Zunächst muss in diesem Skript eine Verbindung zur Datenbank hergestellt werden.

Um die Daten aus dem aufrufenden Formular zu übernehmen ist ab PHP Version 4.1 nur noch die Methode mit globalen Arrays angeraten, da ab dieser Version globale Daten aus Sicherheitsgründen abgeschaltet wurden. Es bietet sich deshalb an, zunächst das Eingabefeld wie in folgendem Beispiel beschrieben in eine lokale Variablen einzulesen. Der Variablenname in dem Array $_POST muss mit dem Feldnamen der Formularseite übereinstimmen.

  $kunr=$_POST['kunr']

Als Nächstes wird überprüft, ob der angegebene Datensatz in der Datenbank vorhanden ist. Dafür wird ein einfaches "select" Befehl an die Datenbank geschickt und mit dem Befehl: $num = mysql_NumRows($result) überprüft, ob ein Datensatz vorhanden ist.  Beispiel:

$query = "SELECT *FROM kunden WHERE kunr = $kunr ";
  $result = mysql_query($query);

  $num = mysql_Num_Rows($result);

Wenn die Variable $num ungleich 0 ist, also ein Datensatz vorhanden ist, dann wird werden die Daten in einem Formular ausgeben, um geändert werden zu können. Ist der Datensatz nicht vorhanden gibt es eine entsprechende Fehlermeldung. Beispiel nur für Kundennummer, Vor- und Nachname (Die Kundennummer darf als Schlüsselfeld nicht verändert werden):

  <FORM ACTION="kunden_aendern2.php" METHOD="post">
  < Kundennummer: 
  <?php echo "$kunr" ?>
  <INPUT TYPE="hidden" NAME="kunr" VALUE="<? echo "$kunr"; ?>">
  Name: 
  <INPUT TYPE="text" NAME="kuname" 
   VALUE="<?php echo mysql_result($result, 0, "kuname");?>" SIZE="20" MAXLENGTH="20">
  Vorname: 
  <INPUT TYPE="text" NAME="kuvorname" 
   VALUE="<?php echo mysql_result($result, 0, "kuvorname");?>" SIZE="20" MAXLENGTH="20">

Mit dem Attribut "hidden" beim INPUT TYPE wird erreicht, dass in diesem Feld keine Eingaben vorgenommen werden können. Mit echo "$kunr" wird lediglich zu Informationszwecken die Kundennummer angezeigt. Da Vor- und Nachname des Kunden eine Änderungsmöglichkeit erwünscht ist, müssen hier die Werte der Datenbank in das Formular eingetragen werden. Das geschieht mit dem Befehl: <?php echo mysql_result($result, 0, "kuname");?> Dies ist ein kleines PHP-Skript eingebettet in das Formular, welches die jeweiligen Werte des gefundenen Datensatzes ausgibt.

Auf diese Weise werden im Skript "kunden_aendern.php" alle Formularfelder gefüllt. Jetzt können die vorhandenen Werte vom Benutzer geändert werden. Mit dem Abschicken der geänderten Werte wird ein weiteres Skript (hier: "kunden_aendern2.php") aufgerufen, welches jetzt die geänderten Daten in die Datenbank einträgt.

Zunächst muss in diesem Skript wie üblich eine Verbindung zur Datenbank hergestellt werden. Danach werden alle Werte vom Eingabeformular ausdrücklich übernommen. Es muss jetzt nicht mehr überprüft werden, ob der Datensatz vorhanden ist, sondern es wird gleich mit dem Befehl "update" der geänderte Datensatz in die Datenbank eingetragen.

  $kunr=$_POST['kunr'];
  $kuname=$_POST['kuname'];
  $kuvorname=$_POST["kuvorname"]; 
  
  $query = "UPDATE kunden 
	    SET kuname='$kuname', 
	        kuvorname='$kuvorname'
 	    WHERE kunr = $kunr"; 

  $result=mysql_query($query);

zum Seitenanfang springen

zum Seitenanfang springen