mit checkboxen Datensätze löschen

stonk

Erfahrenes Mitglied
Tach zusammen!!

Ich mache gerade ein kleines Nachrichtensystem. Dort sollte man mit checkboxen mehrere Nachrichten auswählen können und dann alle ausgewählen mit einem Knopfdruck löschen...
Habe hierzu folgendes gemacht:

Checkboxen (sind in einer Schleife):
PHP:
...
<input type=\"checkbox\" name=\"delbox[$i]\">
...

Delete Script:
PHP:
mysql_connect("localhost","xx","xx"); 
mysql_select_db("usr_web640_3"); 

for ($i = 1; $i <= count($_POST['delbox']); $i += 1)
{
     $sql="DELETE FROM nachrichten WHERE ID = ".$_POST[delbox] [$i];
     mysql_query($sql);
}


Irgendwie funktioniert es aber nicht...:( es kommt keine Fehlermeldung, es löscht einfach keine Datensätze...
Kann mir jemand helfen?

Besten Dank im Voraus
Gruss stonk
 
PHP:
echo '<input type="checkbox" name="delbox['.$i.']">';
PHP:
mysql_connect("localhost","xx","xx"); 
mysql_select_db("usr_web640_3"); 

for ($i = 1; $i <= count($_POST['delbox']); $i += 1)
{
     $sql = "DELETE FROM `nachrichten` WHERE `ID` = '".$_POST['delbox'][$i]."'";
     mysql_query($sql);
}
Leerzeichen zwischen ['delbox'] und [$i] halte ich für sinnlos.
 
Ich halte das $i für sinnlos. Es sollte da lieber die Id des Datensatzes stehen.
also nach dem Beispiel
Code:
$sql = "SELECT * FROM news_table LIMIT 0,20"; //20 einträge
while($row = mysql_fetch_array($sql){
  //ausgaben
  echo '<input type="checkbox" name="delbox['.$i.']" value="'.$row['id'].'">'; 
}

weil so stimmen dann auch die ids die er löscht...
 
Zuletzt bearbeitet:
so ;) ungefähr musst ihn auf deine bedürfnisse anpassen
PHP:
  foreach($_POST['delbox'] as $box){
    $sql = "DELETE FROM nachrichten WHERE ID= ' " .$box. " ' " ; 
    if(mysql_query($sql)){
      echo 'Datensatz mit der ID :"'.$box.'" wurde gelöscht<br>';
   } else {
      echo 'Datensatz konnte nicht gelöscht werden';
   } 
  }
 
Hallo nochmals...

ist irgendwie schon komisch... gestern hat es funktioniert und als ich es vorhin wieder mal ausprobiert hatte, löschte es immer nur einen Datensatz, auch wenn ich mehrere ausgewählt hatte...:(

Hier mein code:

delete script:
PHP:
mysql_connect("localhost","xxxx","xxxx"); 
mysql_select_db("nachrichten"); 

foreach($_POST['delbox'] as $box){ 
    $sql = "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box. " ' " ; 
    if(mysql_query($sql)){ 
		header('Location: index.php?id=nachrichten&status=okdelete');
		exit();
   } else { 
		header('Location: index.php?id=nachrichten&status=nokdelete');
		exit();
   } 
  }

die inputbox:
PHP:
$i = $anzeige['nachricht_id'];
echo "<input type=\"checkbox\" name=\"delbox['.$i.']\" value=\"$i\">";

Weiss jetz wirklich nicht weiter... :confused:
Besten dank an alle
gruss stonk
 
Zuletzt bearbeitet:
PHP:
mysql_connect("localhost","xxxx","xxxx"); 
mysql_select_db("nachrichten"); 

foreach($_POST['delbox'] as $box){ 
    $sql = "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box. " ' " ; 
    if(mysql_query($sql)){ 
        header('Location: index.php?id=nachrichten&status=okdelete'); 
        exit(); 
   } else { 
        header('Location: index.php?id=nachrichten&status=nokdelete'); 
        exit(); 
   } 
  }
also für jedes element von $_POST['delbox' als $box legste dein SQL-Statement fest.
Wenn das SQL-Statement gequeried werden kann, also der Datensatz gelöscht werden kann. Geht er auf die seite "index.php?id=nachrichten&status=okdelete'"
Das heisst doch laut meiner Logik, dass wenn einmal der Datensatz gelöscht werden konnte, er das script verlässt und sogar den restlichen code aufgrund des EXIT(); abbricht.

also

PHP:
mysql_connect("localhost","xxxx","xxxx"); 
mysql_select_db("nachrichten"); 
$true = 1;
foreach($_POST['delbox'] as $box){ 
    $sql = "DELETE FROM nachrichten WHERE nachricht_id = ' " .$box. " ' " ; 
   if(!mysql_query($sql)){
     $true = 0;
   }
   if($true){ 
        header('Location: index.php?id=nachrichten&status=okdelete'); 
        exit(); 
   } else { 
        header('Location: index.php?id=nachrichten&status=nokdelete'); 
        exit(); 
   } 
  }
so müsste das gehen
 

Neue Beiträge

Zurück