Array-Datensatz löschen per ID

Ich habe nun überlegt, dass es sinn machen würde, wenn man die Datensätze per Checkbox selektiert und dann mehrere löschen könnte. Hierzu habe ich folgenden Ansatz.

Über einen globalen Button zum löschen über form...

PHP:
echo "<form name=\"form\" method=\"post\">";

if(isset($_POST["id"])) 
{
     mysql_query("delete from daten where daten IN ('".implode("','",$_POST["id"])."')");
}

------------

Hier die Checkbox im array

// Ab hier werden die Datensaetze zeilenweise ausgeben
PHP:
while ($datensatz = mysqli_fetch_array( $abfrageergebnis ))
  {  
  		echo" <tr>";
		echo "<td><input type='checkbox' value='$id' name='id[]'>".htmlspecialchars( $datensatz['id'] )."</td>";

-----------

Und noch der Button zum löschen und das Formende

PHP:
echo "<input type=\"submit\" value=\"Löschen\">";
echo "</form>";

-----------

Mittels

PHP:
 echo "(delete from daten where daten IN ('".implode("','",$_POST["id"])."')";
(delete from daten where daten IN ('','','')

und

PHP:
var_dump($_POST);
array(1) { ["id"]=> array(3) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" } }


Lasse ich das Ergebnis ausgeben. Leider komme ich nicht weiter. Mal wieder...
 
Du solltest natürlich auch das korrekte Feld beim löschen überprüfen

PHP:
mysql_query("delete from daten where id IN ('".implode("','",$_POST["id"])."')");

in deinem Code Überprüfst du auf "daten" statt auf die id die du übergibst.
 
Hi, danke für die Atnwort. Das hatte ich übersehen. Hat leider aber keinerlei Auswirkung. Aber dennoch ein wichtger Hinweis!!
Hast du noch eine Idee?

LG
 
Morgen,

habe jetzt mal alles ganz frisch und einfach gemacht...

Also hier meine Abfrage:

PHP:
// Löschen per checkbox
if (isset($_REQUEST['id'])) {
  reset($_REQUEST['id']);
  foreach ($_REQUEST['id'] as $k => $v) {
    print "$k $v\n";
  }
} else {
  print "Keine Datensätze per Checkbox gewählt...\n";
}

Hier mein array zur Ausgabe:

PHP:
while ($datensatz = mysqli_fetch_array( $abfrageergebnis ))
  {  
  		echo" <tr>";
		echo "<td><input type='checkbox' value='$id' name='id[]'>".htmlspecialchars( $datensatz['id'] )."</td>";

...

Und noch der Knopf zum löschen

PHP:
echo "<input type=\"submit\" value=\"Löschen\">";

Die Ausgabe zählt mir dann begonnen bei 0 die Einträge im array vor. <- Selektiere ich 5 Datensätze erhalte ich die Ausgabe

0 1 2 3 4

Leider kann ich damit nicht viel anfangen, da ich nicht die gewünschten Datensätze geliefert bekomme. Mir fehlen also die Infos über die tatsächliche selektion und dann das "Event" diese dann auch zu löschen. Evt. hat ja jemand ne Idee.

LG
 
Zuletzt bearbeitet:
Solltest du hier
PHP:
echo "<td><input type='checkbox' value='$id' name='id[]'>".htmlspecialchars( $datensatz['id'] )."</td>";
nicht auch noch den value auf den wert aus der Datenbank setzen, nach deinem Codefetzen sieht es aus, als währen alle values leer, da die Variable $id nicht gesetzt zu sein scheint.
 
Übrigens ganz wichtig:
PHP:
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';

Sollte man niemals machen, da man so seine Seite anfällig für XSS macht.
 
Zurück