Per Checkbox löschen

P

PasiXXL

Hi,

ich bins schon wieder.
Für meine Shoutbox bastel ich gerade eine Art Backend. Dazu habe ich eine admin.php erstellt. Ein Ausschnitt davon:
PHP:
    while($row = mysql_fetch_object($ergebnis))
    {

        echo "<tr>\n";
        echo "<td><input type=\"checkbox\" name=\"loeschen[]\" value=\"$row->id\" size=\"20\" /></td>";
            echo "<td>$row->id</td>\n";
           echo "<td>$row->username</td>\n";
           echo "<td>&nbsp;</td>\n";
            echo "<td>$row->nachricht</td>\n";
            echo "<td>&nbsp;</td>\n";
        echo "</tr>";



if($submit) {
// Wenn der Submit-Button geklickt wurde ...

// die Anzahl der markierten Datensaetze ermitteln
$y=count($loeschen);
echo "$y Datensätze werden gelöscht.<br><br>";

    // Für jeden markierten Datensatz
    // den delete-Befehl aufrufen.
    for($x=0;$x<$y;$x++) {
    mysql_query("delete from testdaten 
where ID='$loeschen[$x]'");
    echo "Gelöscht: $loeschen[$x]<br>";
    }
}
}
?>

          </table>
        </div>
        </div>
<div>
 <input type="submit" name="submit" value="Löschen">
</div>

Ich hänge gerade an dem Problem fest, dass sich die Daten nicht über angeklicktbare Checkboxen löschen lassen. Da es nicht funktioniert, erscheinen auch nicht die Fehlermeldungen. Dazu auch noch eine Frage: Ich möchte einen bestimmten "Ort" bestimmen, wo die Fehlermeldungen erscheinen sollen. Ist sowas möglich?

Ich bedanke mich für euere Bemühungen
Pasi
 
Evtl wäre ein Stichwort register_globals. Verwende die globalen supervariablen $_POST, $_GET etc... Beispielsweise: $submit => $_POST["submit"]
Sofern du die Ausgabe "xx Datensätze werden gelöscht" nicht erhälst, wird dies das Problem wohl sein!
 
HI,

also du meinst so:
PHP:
    while($row = mysql_fetch_object($ergebnis))
    {

        echo "<tr>\n";
        echo "<td><input type=\"checkbox\" name=\"loeschen[]\" value=\"$row->id\" size=\"20\" /></td>";
            echo "<td>$row->id</td>\n";
           echo "<td>$row->username</td>\n";
           echo "<td>&nbsp;</td>\n";
            echo "<td>$row->nachricht</td>\n";
            echo "<td>&nbsp;</td>\n";
        echo "</tr>";



if($_POST["Send"] == "Send") {
// Wenn der Submit-Button geklickt wurde ...

// die Anzahl der markierten Datensaetze ermitteln
$y=count($loeschen);
echo "$y Datensätze werden gelöscht.<br><br>";

    // Für jeden markierten Datensatz
    // den delete-Befehl aufrufen.
    for($x=0;$x<$y;$x++) {
    mysql_query("delete from testdaten 
where ID='$loeschen[$x]'");
    echo "Gelöscht: $loeschen[$x]<br>";
    }
}
}
?>

          </table>
        </div>
        </div>
<div>
 <input type="submit" name="Send" value="Send">
</div>

Es hat sich nix geändert. Diesen ob_start()-Tag braucht man diesem Fall nicht, oder?

Pasi
 
für das Löschen:
PHP:
if($_POST["Send"] == "Send") {
  echo count($loeschen) . " Datensätze werden gelöscht.<br><br>";
  foreach ($loeschen as $loeschen_bit) {
    mysql_query("DELETE FROM testdaten WHERE ID='".$loeschen_bit."'");
    echo "Gelöscht: $loeschen_bit<br>";
  }
}

für das Ausgeben:
PHP:
while($row = mysql_fetch_object($ergebnis)) {
  echo "<tr>
          <td><input type=\"checkbox\" name=\"loeschen[]\" value=\"{$row->id}\" /></td>
          <td>{$row->id}</td>
          <td>{$row->username}</td>
          <td>&nbsp;</td>
          <td>{$row->nachricht}</td>
          <td>&nbsp;</td>
        </tr>";
}

wäre evtl gut wenn du mal ein wenig mehr deines Codes zeigst... Das Formular wird aber schon per POST übermittelt, ja?
 
HI,

Danke für deine Antwort. Die Datei soll für die Administration der Shotbox dienen.
Ich bekomme jedoch die Fehlermeldung:
"Parse error: parse error, unexpected $end in C:\Programme\xampp\htdocs\shoutbox\admin.php on line 59"

Die admin.php sieht im Moment so aus:
PHP:
<body>
        <div id="center">
        <div style="width: 80%;">
        <table width="516">
          <tr>
        <td><input type="checkbox" name="" value="" size="20" /></td>
        <td>ID</td>
            <td>Name</td>
            <td>&nbsp;</td>
           <td>Kommentar</td>
            <td>&nbsp;</td>
          </tr>
          
<?PHP
   
 // Ausgeben
    $abfrage = "SELECT `id`, `username`,`nachricht` FROM `shoutbox` ORDER BY `id` Asc;";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {

        echo "<tr>\n";
        echo "<td><input type=\"checkbox\" name=\"loeschen[]\" value=\"{$row->id}\" size=\"20\" /></td>";
            echo "<td>{$row->id}</td>\n";
           echo "<td>{$row->username}</td>\n";
           echo "<td>&nbsp;</td>\n";
            echo "<td>{$row->nachricht}</td>\n";
            echo "<td>&nbsp;</td>\n";
        echo "</tr>";

}

if($_POST["Send"] == "Send") {
  echo count($loeschen) . " Datensätze werden gelöscht.<br><br>";
  foreach ($loeschen as $loeschen_bit) {
    mysql_query("DELETE FROM shoutbox WHERE ID='".$loeschen_bit."'");
    echo "Gelöscht: $loeschen_bit<br>";
  }

?>

          </table>
        </div>
        </div>
<div>
 <input type="submit" name="Send" value="Send">
Warum müssen eigentlich echige Klammern um die Strings? In meiner ersten Daei war dies nicht nötig.
In einer zweiten Datei verschick ich die Einträge an die Datenbank über ein Formular. Es wird über Post verschickt. Die Daten werden dort auch gleich dargestellt. Das funktioniert auch ohne Probleme:
PHP:
if($_POST["Send"] == "Send")  
{
   $nick = trim(strip_tags(mysql_real_escape_string($_POST["username"])));
   $message = trim(strip_tags(mysql_real_escape_string($_POST["nachricht"])));
   $result = mysql_query("INSERT INTO `shoutbox` (`username`, `nachricht`) 
                                      VALUES ('$nick','$message');") or die(mysql_error());
   header("location: http://localhost/shoutbox/eintraege.php"); // <-- richtigen pfad 
} 
    // Ausgeben
    $abfrage = "SELECT `username`,`nachricht` FROM `shoutbox` ORDER BY `id` DESC;";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
     echo "<p>\n";
     echo "$row->username: ";
     echo wordwrap( $row->nachricht, 21, "<br />\n");
     echo "<br />\n";
     echo "</p>\n";
     echo "<hr />\n";
    }  
?>
<div>
<br />
<form method="post" action="<?=$PHP_SELF?>" />
<input type="text" name="username" value="Name" size="20" /><br />
<input type="text" name="nachricht" value="Nachricht" size="20" /><br />
<br />
<input type="submit" name="Send" value="Send" />
</div>

  </body>
</html>
<?php
mysql_close();
ob_end_flush();
?>

Grüße

Pasi

//edit: Die Fehlermeldung kommt in Zeile 60 vor ;)
 
Zuletzt bearbeitet von einem Moderator:
HI,

ich spiele immer noch mit den Einstellungen rum, aber leider funktioniert es auch nicht mit $_get.
Was muss ich im Code ändern, damit es funktioniert?

Pasi
 
HI,

ja ich weiß, dass hier alles von privaten Leuten kostenlos geamacht wird.Aber ich bräuchte wirklich hier weitere Hilfe, da nichts passiert und eine komische Fehlermeldung kommt:
Parse error: parse error, unexpected $end in C:\Programme\xampp\htdocs\shoutbox\admin.php on line 60

Ich würde mich auf Hilfe freuen

Pasi
 
Hey,

danke für deine Antwort.
In der Datei ist nichts wichtges mehr.
PHP:
<?PHP
  include("dbconnect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Adminbereich - Shoutbox</title>
 <link rel="stylesheet" title="Standardstylesheet" href="admin.css" type="text/css" />
</head>
<body>
        <div id="center">
        <div style="width: 80%;">
        <table width="516">
          <tr>
        <td><input type="checkbox" name="" value="" size="20" /></td>
        <td>ID</td>
            <td>Name</td>
            <td>&nbsp;</td>
           <td>Kommentar</td>
            <td>&nbsp;</td>
          </tr>
          
<?PHP
   
 // Ausgeben
    $abfrage = "SELECT `id`, `username`,`nachricht` FROM `shoutbox` ORDER BY `id` Asc;";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {

        echo "<tr>\n";
        echo "<td><input type=\"checkbox\" name=\"loeschen[]\" value=\"{$row->id}\" size=\"20\" /></td>";
            echo "<td>{$row->id}</td>\n";
           echo "<td>{$row->username}</td>\n";
           echo "<td>&nbsp;</td>\n";
            echo "<td>{$row->nachricht}</td>\n";
            echo "<td>&nbsp;</td>\n";
        echo "</tr>";

}

if($_POST["Send"] == "Send") {
  echo count($loeschen) . " Datensätze werden gelöscht.<br><br>";
  foreach ($loeschen as $loeschen_bit) {
    mysql_query("DELETE FROM shoutbox WHERE ID='".$loeschen_bit."'");
    echo "Gelöscht: $loeschen_bit<br>";
  }

?>

          </table>
        </div>
        </div>
<div>
 <input type="submit" name="Send" value="Send">
</div>
</body>

</html>
 
1. hast du kein <form ...> ... </form> welches nötig ist, um Daten abzusenden...
2. lösche mal alle Zeilen am Dateiende...

also hier:
PHP:
<?PHP
  include("dbconnect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html>
    <head>
      <title>Adminbereich - Shoutbox</title>
      <link rel="stylesheet" title="Standardstylesheet" href="admin.css" type="text/css" />
    </head>
  <body>
    <div id="center">
      <div style="width: 80%;">
        <form method="post" action="?action=send">
        <table width="516">
          <tr>
            <td><input type="checkbox" name="" value="" size="20" /></td>
            <td>ID</td>
            <td>Name</td>
            <td>&nbsp;</td>
            <td>Kommentar</td>
            <td>&nbsp;</td>
          </tr>
          
<?PHP
   
 // Ausgeben
    $abfrage = "SELECT `id`, `username`,`nachricht` FROM `shoutbox` ORDER BY `id` Asc;";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis)) {
      echo "<tr>
              <td><input type=\"checkbox\" name=\"loeschen[]\" value=\"{$row->id}\" size=\"20\" /></td>
              <td>{$row->id}</td>
              <td>{$row->username}</td>
              <td>&nbsp;</td>
              <td>{$row->nachricht}</td>
              <td>&nbsp;</td>
            </tr>";
    }

    if($_GET["action"] == "send") {
      echo count($_POST["loeschen"]) . " Datensätze werden gelöscht.<br><br>";
      foreach ($_POST["loeschen"] as $loeschen_bit) {
        mysql_query("DELETE FROM shoutbox WHERE ID='".$loeschen_bit."'");
        echo "Gelöscht: $loeschen_bit<br>";
      }
    }
?>
          <tr>
            <td colspan=6><input type="submit" name="Send" value="Send"></td>
          </tr>
        </table>
        </form>
      </div>
    </div>
  </body>
</html>
 
Zurück