mehrere Checkbox löschen

campari

Erfahrenes Mitglied
Moin,

möchte mehrere Datensätze in einem Feld gleichzeitig löschen.
Dazu werden über Checkbox die Einträge ausgewählt:

PHP:
while($marr = mysql_fetch_array($msqlax)) {
echo "<input type='checkbox' name='checkdel[]' value='".$marr['aid']."'>\n";

Dann im Zwischenschritt angezeigt und um endgültige Löschen gebeten:

PHP:
$pcheckdel = $_POST['checkdel'];
$rrr = implode(',', $pcheckdel);
echo "<form action='zwdelall.php' method='POST'>\n";
echo "<input type='hidden' name='delid' value='$rrr'>\n";
echo "<input type='submit' name='butdel' value='Endg&uuml;ltig l&ouml;schen'>\n";

zwdelall.php soll über schleife validieren, ob jeder eintrag auch dem benutzer gehört und dann löschen:

PHP:
$pdelid = $_POST['delid']; 
$delarr = array($pdelid);
foreach($delarr as $del) {
// id <-> benutzer validieren
$valsql = "SELECT aid, usid FROM bart WHERE aid='$del' AND usid='$partid'";
$valsqla = mysql_query($valsql);
$valsqlb = mysql_num_rows($valsqla);
if(!($valsqlb == 1)) { 
echo "noe";
} else {
// löschen wenn val+
$delsql = "DELETE FROM bart WHERE aid = '$del' AND usid='$partid'";
$delsqlx = mysql_query($delsql);
echo "klappt<br>";
}
}

Aber es wird immer nur ein Eintrag gelöscht.
Idee dazu?

Danke
campari
 
Mal abgesehen von der sicher schlechten Performance:
PHP:
$pdelid = $_POST['delid']; 
$delarr = array($pdelid); 
// sollte hier nicht ein $delarr = explode(",", $pdelid) rein?
foreach($delarr as $del) {
// id <-> benutzer validieren
$valsql = "SELECT aid, usid FROM bart WHERE aid='$del' AND usid='$partid'";
$valsqla = mysql_query($valsql);
$valsqlb = mysql_num_rows($valsqla);
if(!($valsqlb == 1)) { 
echo "noe";
} else {
// löschen wenn val+
$delsql = "DELETE FROM bart WHERE aid = '$del' AND usid='$partid'";
$delsqlx = mysql_query($delsql);
echo "klappt<br>";
}
}
Wenn ich die beiden Queries miteinander vergleiche ist das SELECT nur gut um zu sagen "Den darfst du nicht löschen"?

Wie wärs denn damit:
PHP:
$pdelid = $_POST['delid']; 
$delsql = "DELETE FROM bart WHERE aid IN ($pdelid ) AND usid='$partid'";
$delsqlx = mysql_query($delsql);
echo "Es wurden ".mysql_affected_rows ()." gelöscht<br>";
 
Zurück