| |
Teil 5 Datensätze löschen
Im letzten Teil unseres kleinen Tutorials wollen wir uns dem Thema "Löschen von Datensätzen" widmen. Das KnowHow dazu haben wir bereits, alles was fehlt ist eigentlich die richtige Anweisung. Noch kurz mal überlegen, wie eine solche Löschen- Funktion aussehen müsste. Wie identifizieren wir am einfachsten den zu löschenden Datensatz? Indem wir uns alle Datensätze anzeigen lassen, den zu löschenden Datensatz auswählen und löschen. Einfach oder? Mehr Gedanken sollte man sich machen, wenn die Datenbank sehr groß ist (also viele Datensätze beinhaltet). Hier wäre es unsinnig, alle Datensätze anzeigen zu lassen. Man sollte sich daher Gedanken machen, wie man den Datensatz am besten identifiziert und dann nur einen entsprechenden Auszug aus der DB anzeigen lassen, oder man weiß ein eindeutiges Merkmal des Datensatzes, und löscht ihn dann direkt.
Der Code:
<?
$db = mysql_connect("127.0.0.1","root");
mysql_select_db("flohmarkt",$db);
$result = mysql_query("SELECT * FROM eintraege ",$db);
while ($myrow = mysql_fetch_row($result)){
printf("Laufende Nummer: <a href='$PHP_SELF?lid=%s'>%s</a><br>Name: %s<br>Vorname: %s<br>Email: <a href='mailto:%s'>%s</a><br>Datum: %s<br>Eintrag: %s<br>Preis: %s<br>Angebot(0) oder Gesuch (1): %s<br><br><br>", $myrow[0],$myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[3], $myrow[4], $myrow[5], $myrow[6], $myrow[7]);
}
?>
Erst mal vollführen wir also einen ganz normalen SELECT. Bei der Ausgabe kommt hier ein kleiner Trick hinzu: Die Laufende Nummer wird als Link hinterlegt, und mit dem Link zusammen wird diese Nummer (was ja unsere eindeutige ID ist) übergeben. D.h. wir haben einen Link (auf dasselbe Dokument) und übergeben mit diesem Link die ID des zu löschenden Datensatzes.
Wir erinnern uns an die vorhergehenden Abschnitte. Dort haben wir auch immer auf das gleiche Dokument als Ziel des Links verwiesen gehabt, und um zu ermitteln, ob es sich bei dem Aufruf um einen ersten Aufruf (zwecks Anzeige der Daten) oder um einen "Aktions-Aufbau" (Seite wurde schon mal angezeigt, es wurde z.B. ein Submit-Button gedrückt um Daten zu übermitteln) handelte, haben wir uns eine Variable "$submit" geschnappt, die auf true/false geprüft wurde. (If/Else-Verzweigung). Genau dasselbe machen wir hier auch wieder.
<?
$db = mysql_connect("127.0.0.1","root");
mysql_select_db("flohmarkt",$db);
if(isset($id)) {
$result = mysql_query("DELETE FROM eintraege WHERE id=$id",$db);
echo "Datensatz erfolgreich gelöscht!";
}
else {
$result = mysql_query("SELECT * FROM eintraege ",$db);
while ($myrow = mysql_fetch_row($result)){
printf("Laufende Nummer: <a href='$PHP_SELF?id=%s'>%s</a><br>Name: %s<br>Vorname: %s<br>Email: <a href='mailto:%s'>%s</a><br>Datum: %s<br>Eintrag: %s<br>Preis: %s<br>Angebot(0) oder Gesuch (1): %s<br><br><br>", $myrow[0],$myrow[0], $myrow[1], $myrow[2], $myrow[3], $myrow[3], $myrow[4], $myrow[5], $myrow[6], $myrow[7]);
}
}
?>
Beim ersten Durchlauf des Skriptes ist die Variable $id false, weil ihr noch kein Wert zugewiesen wurde. D.h. wir springen sofort in den else- Zweig, und wie oben beschrieben, wird er Inhalt der DB dargestellt. Die Nummern der Links (wichtig ist hier, das die Nummern den Datensatz eindeutig identifizieren!) erscheinen als Links, und übermitteln die ID des Datensatzes an selbiges Dokument. Beim nunmehr zweiten Aufruf des Dokuments ist die variable $id auf true gesetzt, weil sie ja eine id-Nummer eines Datensatzes beinhaltet.
Also wird er if-Teil ausgeführt:
$result = mysql_query("DELETE FROM eintraege WHERE id=$id",$db);
Die Anweisung zum Löschen eines Datensatzes ist die DELETE-Anweisung. In Klartext heißt obige Anweisung: LÖSCHE AUS eintraege WO id=$id
D. h. Die Datenbank durchsucht die Spalte id solange, bis sie auf die richtige (gleiche) Datensatznummer trifft, und löscht dann den gesamten Eintrag, der zu der Nummer gehört.
So, das war's erst mal mit dem Tutorial. Experimentiert ruhig mal ein wenig mit dem ganzen kram rum, nur so werdet Ihr das Handling von Datenbanken begreifen. Ich wünsche Euch auf jeden Fall viel Spaß damit, und hoffe, das Ihr mir Bescheid sagt, wenn Euch irgendwelche Fehler auffallen ...
|