MySQL-Fehler durch fehlende Wertübergabe

TMG

Mitglied
Hi,

mein Problem ist folgendes. Ich möchte aus einer Datenbank einen Datensatz löschen. Aber durch eine Bestätigung. Wenn ich nun den PHP-Code in die Seite schreibe, die den Datensatz anzeigt, wird der Datensatz damit dann auch gelöscht. Das funktioniert auch so weit. Aber ich möchte, dass man auf der Seite, die den Datensatz anzeigt einen Button drückt und dann ein Wert an die del.php weitergegeben wird, wo dann der Datensatz gelöscht werden soll. Die Zeile für den Befehl klappt, wenn sie in der Datei (read_detail.php) steht. Aber nicht, wenn sie in der del.php steht.

PHP:
$delcom="DELETE FROM inserate WHERE ID=".($_POST['id']);

if ($_POST['confirm'] == 'confirm')	{
	mysql_query($delcom) or die("Fehler: " . mysql_error());
	echo "Erfolgreich gelöscht.";

Ich bekomme dann immer folgende Fehlermeldung angezeigt:

Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Ich habe es auch schon mit
PHP:
$delcom="DELETE FROM inserate WHERE ID=".($_GET['id']);
probiert. Das klappt genauso wenig.

Wenn ich allerdings
PHP:
$delcom="DELETE FROM inserate";
schreibe, löscht er alle Datensätze. (Ist ja auch logisch *g*)

Ich zeige euch am besten noch die Methode, mit der der Wert übergeben wird,

HTML:
<form name="form1" method="post" action="del.php">
				  
<input type="checkbox" name="confirm" value="confirm">
<input name="delete" type="submit" class="readdetail" value="Löschen">
                  
</form>

Also ihr seht, es soll so aussehen, dass ich auf der Seite, auf der die Datensätze angezeigt werden, eine Checkbox ausgewählt werden soll und dann auf einen Button "Löschen" geklickt wird. Dadurch soll der Wert der Checkbox "confirm" an die del.php weiter gegeben werden.

Das Problem ist sicherlich, dass der Wert "ID" nicht weiter gegeben wird. Von der read.php zur read_detail.php übergebe ich den Wert so:

PHP:
<a href='read_single.php?id=".($daten->id)."'><b>Eintrag lesen</b></a>

Also ist nun die Frage, wie ich den Wert ID an die del.php weiter geben kann.


Weiß jemand Rat?


Vielen Dank,
TMG

PS: Weer Rechtsreibfeler enddekt, darf sie behaalten. ;)
 
Mach daraus mal einen (positiven) Integerwert:
PHP:
"DELETE FROM inserate WHERE ID=".abs(intval($_POST['id']))
 
Dann lass dir doch mal die Abfrage ausgeben und überprüfe sie ob überhaupt das erreicht wird, was du dir vorstellst.
 
Ich hab jetzt mal nen Fehler eingebaut. Und dabei folgende Fehlermeldung bekommen:

PHP:
$delcom="DELETE * FROM inserate WHERE ID=".abs(intval($_POST['id']));
Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM inserate WHERE ID=0' at line 1

Man beachte die "0"

Die ID sieht aber zum Beispiel so aus: 1165250617

Also nehme ich einfach mal an, dass die ID nicht übergeben wird.
 
Die Zahl sollte eigentlich noch im Wertebereich für Integerwerte sein. Besitzt die Variable überhaupt den Wert? Was gibt denn var_dump($_POST['id']) in dem Fall aus?
 
NULL Fehler: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM inserate WHERE ID=' at line 1
 
Problem gefunden: die $_POST['id']-Variable besitzt keinen Wert („NULL“) oder existiert gar nicht.

Bist du dir sicher, dass das Skript durch die POST-Methode aufgrrufen wird?
 
Also ich bin da nicht soooooo bewandert, aber im Formular steht method="post"
Sollte ich da vieleicht Get hinschreiben und im script den Befehl auch in Get umwandeln ?

HTML:
<form name="form1" method="post" action="del.php">
 
Wenn ich mir das Formular aus deinem ersten Beitrag anschaue, vermisse ich das Formularelement für die ID. Gibt es dafür überhaupt ein Feld innerhalb des Formulars?
 
Zurück