Datenbanken
MySQL

Informatik Johann Penon

Daten in einer Datenbank löschen (delete)


Um einen Datensatz in einer Datenbank zu löschen, ist es zunächst notwendig die Werte des Schlüsselfeldes in einem Formular zu erfassen, um diese dann in einem weiteren Skript aus der entsprechende Datenbank zu löschen. Das Beispiel ist wieder auf eine Kundentabelle mit dem Schlüsselfeld "kunr" bezogen.

Wenn Sie die Skripte: "kunden_loeschen_formular.html und "kunden_loeschen.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

 <label for="suchbegriff">Kundennummer: </label>
<input name="kunr" id="kunr" type="text" size="06" maxlength="06" />

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_loeschen.php") aufgerufen, welches den Datensatz aus der Datenbank entfernt oder wenn der Datensatz nicht vorhanden ist, eine Fehlermeldung ausgibt.

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']

Nun kann der Datensatz mit dem SQL-Befehl "delete" aus der Datenbank entfernt werden. Als Erstes 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:

 $query1 = "SELECT kunr FROM kunden WHERE kunr = '$kunr' ";
 $result = mysql_query($query1);

 $num = mysql_NumRows($result);

Wenn die Variable $num ungleich 0 ist, also ein Datensatz vorhanden ist, dann wird dieser mit dem "delete" Befehl gelöscht, ansonsten wird eine Fehlermeldung ausgegeben. In diesem Beispiel ist keine aktive Rückversicherung vorgesehen. Beispiel:

  if ( $num != 0 ) 
  {
     $query2="DELETE FROM kunden WHERE kunr = '$kunr'"; 
     $result2 = mysql_query($query2);
     if ($result2)
	 {
	    print"<p>Kundennummer: <b>$kunr</b> wurde gelöscht.<p> ";
  }
  } 
  else 
  { 
     print"<p>Datensatz nicht vorhanden!</p>";
  } 

 



zum Seitenanfang springen

zum Seitenanfang springen