Im Homepage und Webhosting-Forum --- Daten aus der Datenbank löschen
Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.
das Übliche: Newby, hat keine Ahnung, versucht aber tolle Sachen mit PHP und MYSQL zu basteln, wälzt schlaue Bücher, klaut aus Tutorials und anderen Scripten und schreit nun "HILFÄÄÄ"
Ich habe mir eine Seite gebastelt, auf der ich Termine eingebe, die per Formular an die DB übermittelt und dann dann in Tabellenform dargestellt werden. Die Felder "Datum", "Name", "Ort", "Beschreibung" kommen aus dem Formular, das Feld "id" wird automatisch zugewiesen. Funktioniert prima.
Nun möchte ich bestimmte Datensätze wieder löschen; auch das per Formular. Funktioniert überhaupt nicht. Ich nehme an, dass ich den Datensatz, der gelöscht werden soll, irgendwo übergeben muss (bzw., hier die variable $id). Woher soll das teil auch wissen, welche id gemeint ist. Wie mache ich das?
Ich habe mit Freude gesehen, dass Dummies wie ich hier nicht mit der sonst leider üblichen Arroganz behandelt werden. Glaubt mir, PHP Manual, Volltextsuche in x Foren und GOOGLE habe ich ausreichend hinter mir...
Vielen Dank im Voraus,
chris
------------------------------------------------------------------------------
Hier kommt der komplette Code:
Hmm, keine Ahnung, ob Du das zu einfach verstanden hast; ich weiss ja nicht, wie einfach mein Problem ist...
***grins***
Das mit dem HIDDEN-FIELD habe ich auch schon durch, leider ohne Erfolg.
Ich habe da, glaube ich, ein grundsätzliches Verständnisproblem:
Das Script holt sich brav die Daten aus der Datenbank, schreibt alles in die Tabelle und setzt den an das Ende der Tabellenzeile.
Alles was ich jetzt mit
1:
2:
3:
4:
if (isset ($_POST['loeschen'])) {
mysql_select_db("datenbank", $dp);
$query_delete = ("DELETE FROM termine WHERE id = '$id'");
$delete = mysql_query($query_delete, $dp);
versuche, ist meiner Meinung nach Blödsinn, da das Script ja gar nicht weiss, welche id gemeint ist.
1:
2:
3:
$id = $_GET['id']
war da nur ein halbherziger Versuch ohne dass ich da genau wusste, was ich da mache.
Tja, wie hole ich diese Information und wo und wie übergebe ich sie?
Und wie schreibe ich diesen Text, ohne dass jemand merkt, dass ich überhaupt keine Ahnung habe?
Argh...
Grüße und Danke für die Antwort,
chris
---
You see it's all a show
Keep 'em laugh and as you go
Just remember that the last laugh is on you.
also was mir noch aufgefallen ist folgendes:
Du erzeugst 2x ein FormTag. Das erste funktionier auch deshalb weil es geschlossen wurde(). Beim 2ten wird es allerdings nicht geschlossen. Dadurch kann auch normalerweise kein Postback ausgelöst werden. Wenn doch, dann weiß er logischerweise nicht welcher Button gedrückt wurde. Wenn Du kurz bevor dur dein FormularTag schließt deine Hiddenfield befüllst und deklarierst kannst Du darauf zugreifen wie zuvor...!
um es vorwegzunehmen. das script ist nicht grad, das was man ordentlich strukturiert
nennt, aber es sollte seine zweck jetzt erfüllen, wenn es auch zu unerwateten
FEHLERN führen kann.
';
echo "";
}
if (isset ($_GET['del'])) {
//mysql_select_db("datenbank", $dp);
$query_delete = ("DELETE FROM termine WHERE id = '".$_GET['del']."'");
$delete = mysql_query($query_delete);
}
?>
ich habe das löschen nicht über POST gelöst sondern per GET, weil es einfacher zu handhaben ist.
ich würder dir auch empfehlen mal mit
header();
zu arbeiten.denn jedesmal wenn du den browser nach einem eintrag refreshst, wird der post nochmal abgesetzt.
wenn du dafür hilfe brauchst. einfach nochmal melden.
gruß raiserle
---
Irren is Menschlich
Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!
@raiserle: Deine Lösung funktioniert. Nur nochmal zur Kontrolle:
Du lässt den ganzen Formularkram weg und hängst stattdessen "?del" an die URL. Das wiederum definierst Du im gleichen Atemzug als '.$row['id'].'
Diesen Wert holst Du dann weiter unten mit ".$_GET['del']." wieder hervor und definierst damit die id, die gelöscht werden soll.
Mehr nicht???
Mann, Mann, Mann...
Die Datensätze werden jetzt korrekt gelöscht; angezeigt wird das aber erst, wenn ich die Seite reloade. Ich nehme mal an, Dein Hinweis auf header(); zielt genau darauf. Ich guck' mir das mal an und geh' Euch in den nächsten Tagen bestimmt wieder auf den Sack damit...
Eine Frage zur Schreibweise: ".$_GET['del']." Ist das das Gleiche wie \"$GET_['del']\" ?
@progrookie: Der tag stand ausserhalb des Bereichs; den hatte ich nicht mit gepostet. Mann, jag' mir doch nicht so einen Schrecken ein; ich war kurz davor mir den Schädel an der Tischkante einzudreschen; hab' dann aber vorsichtshalber doch noch mal nachgeschaut.
Ich dank' Euch vielmals für die Hilfe!
Viele Grüße,
chris
---
You see it's all a show
Keep 'em laugh and as you go
Just remember that the last laugh is on you.
Eine Frage zur Schreibweise: ".$_GET['del']." Ist das das Gleiche wie \"$GET_['del']\" ?
nein, es ist nicht das selbe. du willst bestimmt auf das mysql-statement hinaus.
id='wert' die einfachen hochkomma könnten an dieser stelle auch weggelassen werden, da die id ja int ist.
die ".$var." sind nur eine stringverkettung das 1. doppelhochkomma geht aus dem string raus, der punkt ist der verkettungsoperator .... und andersrum
normal werden Variablen in doppelhochkommas mit geparsed, aber ich mag es nicht.
ausserdem darfst du dann nicht das assoziativarray $_GET['del'] in einfache hochkommas setzen. es müsste dann so aussehen $_GET[del]