mehrere Datensätze markieren und löschen

rernanded

Erfahrenes Mitglied
Hi,
habe ein Problem mit folgendem Script. Es tut nicht was verlangt wird. Woran liegts?
PHP:
<?php

$db=@mysql_connect("host","user","pw");
$select=@mysql_select_db("dbname",$db);

if($submit) {

$y=count($loeschen);
echo "$y Datensätze werden gelöscht.<br><br>";

    for($x=0;$x<$y;$x++) {
    mysql_query(" DELETE FROM news WHERE id='$loeschen[$x]' ");

    echo "Gelöscht: $loeschen[$x]<br>";
    }
}

$result=mysql_query("SELECT * FROM news");

// Nur wenn Daten gefunden wurden wird das Formular angezeigt.
if(mysql_num_rows($result)) {
?>
<form method="post" action="delete_mehrere.php">
<table>
  <?php
  while($row=mysql_fetch_array($result,MYSQL_ASSOC)) {
  $id=$row["id"];
  $headline=$row["headline"];
  ?>
<tr>
<td>
<input type="checkbox" name="loeschen[]" value="<?php echo $id ?>">
</td>
<td>
<?php echo $headline ?>
</td>
</tr>
<? } ?>
</table>
<br>
<input type="submit" name="submit" value="löschen">
</form>
<?php
} else {
echo "Es wurden keine Daten gefunden.";
}
?>
Gruß
MONI
 
Also ich finde das mit dem php-Code, der unterteilt auf mehrere <?php ?> ist sehr unübersichtlich und wusste auch gar nicht, dass man die Schleifen und so damit unterbrechen darf.

Kannst du $loeschen mal var_dump()en? Was steht da drin?

LG noeden
 
Es tut nicht was verlangt wird. Woran liegts?
Das immer wieder gern gesehene Spiel "rate meine Fehlermeldung".

Vermutlich liegt der Fehler in Zeile 38. Da fehlt was. Es sei denn du hast short open tags aktiviert.

Btw.
Du solltest dir angewöhnen deinen Code besser zu strukturieren.
Das kann ja kein Mensch lesen.
Und die Delete Query ginge auch ohne Schleife.
 
Zuletzt bearbeitet:
Hi,
vielleicht ist der Code besser strukturiert, funktioniert aber auch nicht ganz. Bin übrigens nicht besonders fit in php.
MONI
PHP:
<?php

$db=@mysql_connect("host","dbuser","dbpw");
$select=@mysql_select_db("dbname",$db);

$abfrage  = "SELECT * FROM news";
$ergebnis = mysql_query($abfrage);
?>

<form method="post" action="delete_mehrere.php">
<?php
while($row = mysql_fetch_object($ergebnis))
{
echo "$row->id<br>";

echo "$row->headline<br>";

echo "<input type=\"checkbox\" name=\"delete[]\" value=\"\" /><br>";

}

if (isset ($_POST["loeschen"])){
    
$y=count($_POST["delete"]);

echo "Es wurde/n : ".$y." Box/en ausgewählt!<br><br>";

}  
?>
<input type="submit" name="loeschen" value="löschen">    
</form>
 
Im ersten Skript war zumindestens:

PHP:
if($submit) {
falsch.

Im zweiten ist die Abfrage mit
PHP:
if (isset ($_POST["loeschen"])){
m.W. korrekt.
Aber
PHP:
echo "<input type=\"checkbox\" name=\"delete[]\" value=\"\" /><br>";
falsch.
Du musst den einzelnen Checkboxen auch Values zu ordnen.

Zumal
funktioniert aber auch nicht ganz
-> Was funktioniert denn nicht?
Hier wird sich nicht jeder die MÜhe machen und das Script lokal prüfen.
 
Zurück