Lösch-Vorgang wird nicht richtig ausgeführt.

psdler

Mitglied
Hey,

ich arbeite momentan an einem Terminplaner und ich habe eine Seite die nennt sich "termine_anzeigen.php" auf der alle in die MySQL-DB eingetragenen Termine aufgelistet werden und hinter jedem Termin ein Button "löschen" ist. Der löschen Button bekommt die ID vom zugehörigen Eintrag, sagen wir also der Eintrag hat die ID "9" dann sieht das so im ausgegebenen HTML aus:
HTML:
<imput value=".9" name="loeschid" type="hidden"><input type="submit" id="button" value="löschen"></imput>

Warum da ".9" steht ist mir ein Rätsel, auf jeden Fall wird der besagte Löschen-Button über eine extra PHP-Datei namens "löschen.php" gelöscht die wie folgt aussieht:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Senden</title>
</head>

<body>
<?php
$db = mysqli_connect('localhost', 'USR', 'PW', 'MEINEDB1)
or die('Fehler beim Verbinden mit MySQL-Server.');
mysqli_set_charset($db, "utf8");

$sql = "DELETE FROM `MEINEDB1`.`termine` WHERE `termine`.`id` = '$id'" ;

  $ergebnis = mysqli_query($db, $sql)
    or die('Fehler bei Datenbankabfrage.' . mysqli_error($db));
	
echo "Hier gibt es nichts zu sehen, sondern hier wird eine Aktion ausgeführt.";

?>
</body>
</html>

Wenn ich den Button betätige gibt er mir mein Echo aus:
Hier gibt es nichts zu sehen, sondern hier wird eine Aktion ausgeführt.
allerdings ändert sich nix am DB Eintrag, denn der ist nach wie vor da.

Woran kann das liegen?

Vielleicht ein Fehler bei der Zusteuerung der ID in der "termine_anzeigen.php"? Das sieht wie folgt aus:
PHP:
<?php
$host = "localhost";
$user = "USR";
$pass = "PW";
$dbase = "MEINEDB1";
$db = mysql_connect($host, $user, $pass) or die ("verbindung fehlgeschlagen");
      mysql_select_db($dbase, $db) or die ("verbindung zur datenbank fehlgeschlagen");


	  
$select = "select * from termine";
$result = mysql_query($select,$db);
if($result){
 echo "<table cellspacing='10'>";
   echo "<tr>";
   echo "<td>Was?</td>";
   echo "<td>Wann?</td>";
   echo "<td>Wo?</td>";
   echo "<td>Beginn</td>";
   echo "<td>&nbsp;</td>";
   echo "</tr>";
   
 while($row = mysql_fetch_array($result)){
  
   
   echo"<tr>";
   echo "<td>".$row['veranstaltungsart']."</td>" ;
   echo "<td>".date("d.m.Y",$row["veranstaltungsdatum"])."</td>";
   echo "<td>".$row['veranstaltungsort']."</td>";
   echo "<td>".date("H:i",$row["veranstaltungsdatum"])."</td>";
   
	if(empty($id)) {

   echo "<td>"."<form action=\"loeschen.php\">";
   echo "<imput type=\"hidden\" name=\"loeschid\" value=\".$row[id]\">";
   echo "<input type='submit' value='löschen' id='button'>";
   echo "</form>"."</td>";
  }
 }
   echo "</table>";
}

?>
( letzter Absatz - ab Zeile 50).

Danke schon mal,
lg,
Tobi
 
Code:
value=\".$row[id]\">";

Was macht denn der Punkt da? ;)

SQL sendet dir übrigens keine Fehlermeldung, wenn das Query korrekt ist, aber keine Datensätze betroffen waren.
Das erfährst du z. B. über [phpf]mysqli_affected_rows[/phpf].
 
Hi,
danke für deine Antwort. Habe jetzt den Punkt weg gemacht:
PHP:
value=\"$row[id]\"

Es geht aber immer noch nciht, es kommt wieder nur mein Echo und nix passiert an der DB selber..

hast du noch ne Ahnung woran das liegen könnte?

lg,
Tobi
 
Hallöle,
ich sehe in deiner termine_anzeigen.php kein öffnendes form-Tag, indem definiert wird, was mit dem Formular geschehen soll (sollte eine Weiterleitung an löschen.php beinhalten).
Weiterhin sollte man in der löschen.php mal prüfen, ob das Formular überhaupt abgeschickt wurde.
Und zu guter letzt:
in der löschen.php einfach mal vor der Query die Variable id abfragen, denn die kann wegen oben genannten Gründen leer sein:

PHP:
echo"$id";
 
Die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.

PHP MySQL Debug Queries

Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.
 
dazu reicht vermutlich mein Wissen nicht aus, wie funktioniert denn die Weiterleitung der Variable vom Termine_anzeigen and die Löschen.php ?
Das öffnende Formtag ist doch da:
PHP:
   echo "<td>"."<form action=\"loeschen.php\">";
   echo "<imput type=\"hidden\" name=\"loeschid\" value=\".$row[id]\">";
   echo "<input type='submit' value='löschen' id='button'>";
   echo "</form>"."</td>";

danke schonmal :)
 
Ehm, geht dass vielleicht so:
PHP:
header("Location: http://localhost/termine_anzeigen.php".$_GET['id']);

Und das ganze bevor dem eigentlichen DELETE befehl ?
 
Zurück