löschen mit checkboxen, aber wie wenn mehrere einträge gleichzeitig?

masta

Erfahrenes Mitglied
Folgendes Problem, ich lese aus meiner Datenbank Datensätze aus in einer Tabelle. Jetzt wird vor jeder Zeile (datensatz) eine Checkbox angelegt die als value die ID des Datensatz bekommt!
also so:
PHP:
<input type=\"checkbox\" name=\"delete\" value=\"$ausgabe[id)\>
jetzt möchte ich alle angekreuzten zeilen (datensätze) löschen...
also schicke ich das formular ab wo es dann so weiter bearbeitet wird:
PHP:
$dbanfrage ="DELETE from $tabelle where id=$delete";
es wird jetzt aber immer nur ein datensatz gelöscht, egal wieviele
checkboxen ich makiere. macht vom quelltext ja auch sinn nur wie realisiere ich es das alle makierten checkboxen gelöscht werden?

Wie immer ein riesen Dank für alle Antworten!
 
so ohne weiteres geht das auch nicht. wenn du mehrere datensätze löschen willst, musst du jede einzelne checkbox überprüfen, ob diese aktiviert ist. wenn ja, nimmst du das mit in deine abfrage auf.
die bedingungen kannst du dann ja einfach mit "or" verknüpfen.
 
entschuldige ich bin absoluter anfänger...könntest du mir das anhand eines kleinen beispieles näher bringen? wäre dir sehr dankbar dafür!

Gruß Patrick...
 
benutze mal die Suchfunktion ... bin mir sicher du findest mehrere threads dazu.. (und auch einen von mir wo genau dieses beschrieben wird wie es funktioniert :-) )...
 
Sorry aber ich finde nichts...sei doch so nett und gib mir ein Tipp!?
Was muss ich als Suchanfrage eingeben?!


Gruß Patrick...
 
ok, angenommen die Felder heißen delbox. Dann übergibt man die ID's als Werte und die Checkboxen müssen Array's sein: delbox[]="id".

Wenn man nichts anklickt, wird auch kein Array Eintrag erzeugt.

Im folgenden Script müsste dann so etwas stehen:

PHP:
if(isset($_POST[delbox])) {
   $delbox2 = $_POST[delbox];
   reset($delbox2);
   while(list($k, $v) = each($delbox2)) {
      $delbox[$k] = $v;
   }
   reset($delbox);
   while(list($k, $v) = each($delbox)) {
      $dquery = mysql_query("DELETE FROM tabelle WHERE id = '$v'");
   }
}

ich weiß, man sollte das ganze besser in einem Query erledigen lassen, aber so siehts übersichtlicher aus. Und so oft löscht man ja net. Und das ist ja nur nen Hinweis (der bei mir in ähnlicher Weise hevorragend funktioniert).

Ciao, F.o.G.
 
F.o.G hat es ja schon gepostet.. aber falls es Dich trotzdem interessiert.. hier der thread von damals -> link ...war zwar mehr fuer eine abfrage.. aber select durch delete und die anderen vars zu ersetzen duerfte kein thema sein ..

(tip: mal ruhig nach usern 'suchen' ;) )
 
Zuletzt bearbeitet:
Nach Usern suchen...hast recht habe ich nicht dran gedacht!
Trotzdem mal wieder vielen Dank für die ganzen Hinweise hier.
Bin echt überrascht wie gut das hier klappt.

Gruß masta
 
Verdammt ich bekomme das irgendwie nicht hin...
Hier mal der Quelltext:

Hier ist die Auslesung der Datenbank...Tabelle wird
erstellt mit Checkboxen...vieleicht value oder name der Box
falsch gesetzt? Ich weiss es wirklich nicht...

PHP:
<?php
include ("config.php");

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * from $tabelle order by id desc";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

echo "<form action=\"db_deletework.php?tabelle=$tabelle\" method=post>";
echo '<table width="600" border="0">';
echo '
<tr>
<td bgcolor="000000" align="center" width="50"><font color="#ffffff" face="Arial" size="-1"><b>Löschen</b></td>
<td bgcolor="000000" align="center"><font color="#ffffff" face="Arial" size="-1"><b>Anbieter</b></td>
<td bgcolor="000000" align="center" width="50"><font color="#ffffff" face="Arial" size="-1"><b>Land</b></td>
<td bgcolor="000000" align="center" width="100"><font color="#ffffff" face="Arial" size="-1"><b>Währung</b></td>
<td bgcolor="000000" align="center" width="100"><font color="#ffffff" face="Arial" size="-1"><b>Verdienst/h</b></td>
<td bgcolor="000000" align="center" width="100"><font color="#ffffff" face="Arial" size="-1"><b>Datum</b></td>
</tr>
';
 while ($ausgabe = mysql_fetch_array ($result))
 {
 print (" <tr>
 <td bgcolor=\"333333\"align=\"center\" width=\"50\">
 <input type=\"checkbox\" name=\"delbox\" value=\"delbox[]=$ausgabe[id]\">
 </td>
 <td bgcolor=\"333333\" align=\"center\"><a href=\"$ausgabe[reflink]\"><font color=\"#ffffff\" face=\"Arial\" size=\"-1\">$ausgabe[anbieter]</a></td>
 <td bgcolor=\"333333\" align=\"center\" width=\"50\"><img src=\"Bilder/$ausgabe[land]\" width=\"24\" height=\"20\" border=\"0\"></td>
 <td bgcolor=\"333333\"align=\"center\" width=\"100\"><font color=\"#ffffff\" face=\"Arial\" size=\"-1\">$ausgabe[waehrung]</td>
 <td bgcolor=\"333333\"align=\"center\" width=\"100\"><font color=\"#ffffff\" face=\"Arial\" size=\"-1\">$ausgabe[verdienst]</td>
 <td bgcolor=\"333333\"align=\"center\" width=\"100\"><font color=\"#ffffff\" face=\"Arial\" size=\"-1\">$ausgabe[datum]</td>
 </tr>");
 }
echo '</table>';
echo '<input type=submit name="SUBMIT" value="Löschen">';
echo '</form>';
mysql_close ($dbverbindung)
?>
Dann geht es weiter mit dem löschen und zwar wie es oben steht:
PHP:
<?php

include ("config.php");

$dbverbindung = mysql_connect ($host, $user, $password);

if(isset($_post[delbox])) {
$delbox2 = $_post[delbox];
reset ($delbox2);
while (list($k, $v) = each($delbox2)) {
$delbox[$k] = $v;
}
reset ($delbox);
while(list($k, $v) = each($delbox)) {
$dbanfrage = "DELETE from $tabelle where id=$v";
}
}
*
if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.");
}
echo "<a href=\"db_ausgabe.php?tabelle=$tabelle\">Eintrag ansehen.</a>";
mysql_close ($dbverbindung);

?>

Das will einfach nicht funktionieren!
Bin für jede Hilfe sehr dankbar...

Gruß masta
 
mmh, is nur ne Idee, und ich habe grade leider nicht die Zeit, es weiter auszuführen, aber:
Mach doch aus den namen der checkboxen einen array, und arbeite den stück für stück durch, zB mit foreach() oder einer einfachen for() { } schleife :)
Das wäre meiner Meinung nach am einfachsten :)
 
Zurück