Löschen von Datensätze gelingt mir nicht :/

NetPerformance

Erfahrenes Mitglied
Hallo

Habe folgendes Problem:

Wie Ihr sieht, erzeugt das Programm genausoviele Tabellen, wie ich Einträge in der Datenbank habe.
Jede Tabelle beinhaltet (Vorname, Nachname, Geburtstag und ein Button)
Die Button tragen duch ("submit_".$i) unterschiedliche Namen z.B. submit_1, submit_2 ... usw.

Wenn ich nu auf ein button klicke z.B Button submit_4 soll der jeweilige Eintrag aus der Datenbank entfernt werden. Und genau das gelingt mir seid 3,5 h nicht !
Mittlerweile bin ich nur noch am Raten.. Wäre super froh, wenn mir jemand weiterhelfen könnte.

var_dump($_POST["submit_$i"]) zeigt folgende Meldung:

Notice: Undefined index: submit_5 in C:\apachefriends\xampp\htdocs\aaron\tabelle.php on line 43
NULL

Gruß und Thx
Aaron *derwiedermalamverzweifelnist*

frage.jpg


Code:
<?php
error_reporting(E_ALL);

	include "connect.php";
	
	$sessionID = 1; // <---------------------------- NICHT VERGESSEN !
				
	$sql = "SELECT
				EntryVorname,
				EntryNachname,
				EntryGeburtstag
		    FROM
				np_birthday_entry
			WHERE
			 	EntryId = $sessionID";
				
	 $result = mysql_query($sql) or die ("<hr><br>Datenbank Verbindung konnte nicht hergestellt werden !<p> Fehlermeldung :<br>".mysql_error());
	 mysql_num_rows($result);
					
	 $i = 0;
					
	 while($row = mysql_fetch_assoc($result)) 
	 {  
		 $i++;		 
		 $temp = "submit_".$i; // Damit die Buttons der Tabellen unterschiedliche namen erhalten z.B. submit_1, submit_2 usw. 
		 
 	  	 $vorname_  =  $row['EntryVorname'];
		 $nachname_ =  $row['EntryNachname'];
		 $gb_       =  $row['EntryGeburtstag'];
		 		 		
		 echo"<form action =".$PHP_SELF." method = post>\n";
		 echo"	<table width=100% border=1 bgcolor=#F3F3EF bordercolor=#000000>\n";
         echo"	 <tr>\n";
  		 echo"	  <td width=20%>$vorname_</td>\n";
  	 	 echo" 	  <td width=20%>$nachname_</td>\n";
		 echo" 	  <td width=20%>$gb_</td>\n";
  		 echo"	  <td width=40%><input type=submit name=$temp id=$temp value='Eintrag entfernen'></td>\n";
 		 echo"	 </tr>\n";
		 echo"	</table>\n";
		 echo"</form>\n";		 		
	 } 

	 var_dump($_POST["submit_$i"]);
	 
	 if(isset($_POST["submit_$i"]))
	 {		
			$sql = "DELETE 
						FROM
    						np_birthday_entry
						WHERE
    						EntryId = $sessionID AND EntryGeburtstag = $gb_ AND EntryVorname = $vorname_ AND EntryNachname = $nachname_";
			
			$result = mysql_query($sql) or die ("<hr><br>Datenbank Verbindung konnte nicht hergestellt werden !<p> Fehlermeldung :<br>".mysql_error());

	 		echo "$vorname_ $nachname_ wurde aus der Datenbank entfernt.";
	 }
	 
?>
 
Machs anders...
Für jede Zeile nimmst du ein neues Formular. In jede Zeile packst du eine "Hidden"-InputFeld mit dem Primärschlüssel des Datensatzes.
Die Submitbuttons können gleich sein.

Nach dem Absenden wird geguckt, ob der Button gedrückt wurde und der Datensatz mit dem entsprechenden Primärschlüssel wird gelöscht.

Das macht das Ganze denke ich einfacher ;-)
 
hi lars..

"Für jede Zeile nimmst du ein neues Formular" kannst du das bitte etwas genauer beschreiben ?

wie kann ich jedesmal ein neues formular erzeugen .. ?

gruß
aaron
 
Ich glaub an folgender Stelle kommt der Fehler...
Versuch mal submit_$i auszugeben was da drinsteht...
PHP:
var_dump($_POST["submit_$i"]);

if(isset($_POST["submit_$i"]))

Ein eigenes FForm für jede Zeile hast du denke ich schon...
Mach folgendes wie Lars schon schreibt:

while (...)
{
....
echo "<input type=\"hidden\" name=\"index\" value=\"".$rw['id oder primärschlüsselspalte]."\">"

}
..
$id = $HTTP_GET_VARS['index'];

if ($id)
( $sql = "DELETE .... WHERE primärschlüsselspalte=$id",,.,,..

)

nur eben die Primärschlüsselspaltennamen einsetzen
 
Zurück