checkbox + Delete Statement

merti

Mitglied
HI alle zusammen,

wenn ich auf einem Checkbox klicke, wird die ganze Datenbank gelöscht -- aber ich will. wenn ich auf einem Checkbox klick das nur der jeweilige Datensatz löscht.

Was mach ich falsch bzw. wie kann ich es besser machen.

Hier der Source:

PHP:
<?
  ini_set('display_errors', '0');
  include "conn.php";


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

  if (isset($_POST['submit']) && ($_POST['submit'] == "loeschen")) {

   if ($_POST['delete'] == TRUE) {
    mysql_query('DELETE FROM user WHERE 1');
    printf ("Datensätze gelöscht: %d\n", mysql_affected_rows());
    }
  }
  while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {

       printf ("<table border=\"1\">

                       <tr><form action=delete.php method=post>

                           <td>ID:</td>
                           <td>Firma: </td>
                           <td>Titel: </td>
                           <td>Vorname: </td>
                           <td>Nachname: </td>
                           <td>Email: </td>
                           <td>Tel: </td>
                           <td>Fax: </td>
                           <td>Strasse: </td>
                           <td>Ort: </td>
                           <td>Plz: </td>
                           <td>PIN: </td>

                           </tr>

                       <tr><td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td><input type=checkbox name=delete></td>


                       </tr></table> " ,


                              $row["ID"],
                              $row[1],
                              $row[2],
                              $row[3],
                              $row[4],
                              $row[5],
                              $row[6],
                              $row[7],
                              $row[8],
                              $row[9],
                              $row[10],
                              $row[11]);
    }

  mysql_free_result($result);

  echo "<input type=submit name=submit value=loeschen>";

  echo "</form>";
?>

Bedanke mich im Vorraus,

lg,

Merti
 
Wundert mich nicht:

mysql_query('DELETE FROM user WHERE 1');
Der Haken liegt logischerweise beim WHERE.

Zuerst gibst du deinem Feld mal ne Value, nämlich der ID des Datensatzes den du löschen willst.
Dann änderst du dein if-Statement so ab: if( is_numer($_POST['delete']) )
und im SQL-Statement dann
DELETE FROM user WHERE deinidfeld = $_POST['delete']

Wichtig aber hierbei, es sollte nicht möglich sein, nicht irgendeine ID löschen zu können, sondern nur für die ich die Rechte habe...weiss ja nicht wie dein System aufgebaut ist. Aber nicht glauben das man Daten die per POST kommen nicht fälschen kann.... und ach eine REFERE Prüfung ist nicht das Gelbe vom Ei.
 
ist das so korrekt ?

PHP:
<?
  ini_set('display_errors', '0');
  include "conn.php";


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

  if (isset($_POST['submit']) && ($_POST['submit'] == "loeschen")) {

   if(is_numer($_POST['delete'])) {
    mysql_query('DELETE FROM user WHERE ID = "'.$_POST['delete'].'"');
    printf ("Datensätze gelöscht: %d\n", mysql_affected_rows());
    }
  }
  while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {

       printf ("<table border=\"1\">

                       <tr><form action=delete.php method=post>

                           <td>ID:</td>
                           <td>Firma: </td>
                           <td>Titel: </td>
                           <td>Vorname: </td>
                           <td>Nachname: </td>
                           <td>Email: </td>
                           <td>Tel: </td>
                           <td>Fax: </td>
                           <td>Strasse: </td>
                           <td>Ort: </td>
                           <td>Plz: </td>
                           <td>PIN: </td>

                           </tr>

                       <tr><td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td><input type=checkbox name=delete value='".$_POST['ID']."'></td>


                       </tr></table> " ,


                              $row["ID"],
                              $row[1],
                              $row[2],
                              $row[3],
                              $row[4],
                              $row[5],
                              $row[6],
                              $row[7],
                              $row[8],
                              $row[9],
                              $row[10],
                              $row[11]);
    }

  mysql_free_result($result);

  echo "<input type=submit name=submit value=loeschen>";

  echo "</form>";
?>

weil es wird jetzt wieder alles gelöscht
 
Try & Error?

Ansonsten meinte ich eigentlich eher das du
if (isset($_POST['submit']) && ($_POST['submit'] == "loeschen")) {
gegen
if(is_numeric($_POST['delete'])) {
tauschst, da $_POST['delete'] nur dann vorhanden ist wenn das Formular gesendet wurde. Und da du keinen Fehler meldest, wenn $_POST['delete'] nicht numerisch ist brauchst du das erste if auch nicht.

Dann ist für mich persönlich noch die Frage der Logik, da du beim Absenden und evtl. Löschen, einmal die Einträge löchst und zudem dennoch das Löschformular anzeigst.... oder ist das so gewollt?

EDIT: Jo sollte is_numeric sein ;)
 
Ahso.. naja dann trifft dich das nur, wenn du mehrere Admins mit unterschiedlichen Rechten hast.
Die nächste Frage wäre dann nur wie du deinen Bereich schützt ob einfach nur per htaccess ansonsten wären Sessions unumgänglich...aber das wäre dann irgendwan ein anderer Thread ;)
 
Morgen Leute,

Kann mir jemand sagen, warum der Source-Code nicht funktioniert?

1. kommt da ein Parse Error Fehler:

Code:
Parse error: parse error, unexpected T_VARIABLE in d:\sbx\merti\delete.php on line 11

PHP:
<?
  ini_set('display_errors', '0');
  include "conn.php";


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

  if(is_numeric($_POST['delete'])) {

   if ($_POST['delete'] == TRUE) {
    mysql_query('DELETE FROM user WHERE ID = '$_POST['delete'] ' ');
    printf ("Datensätze gelöscht: %d\n", mysql_affected_rows());
    }
  }
  while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {

       printf ("<table border=\"1\">

                       <tr><form action=delete.php method=post>

                           <td>ID:</td>
                           <td>Firma: </td>
                           <td>Titel: </td>
                           <td>Vorname: </td>
                           <td>Nachname: </td>
                           <td>Email: </td>
                           <td>Tel: </td>
                           <td>Fax: </td>
                           <td>Strasse: </td>
                           <td>Ort: </td>
                           <td>Plz: </td>
                           <td>PIN: </td>

                           </tr>

                       <tr><td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td> %s</td>
                           <td><input type=checkbox name=delete value='".$_POST['ID']"'>></td>


                       </tr></table> " ,


                              $row["ID"],
                              $row[1],
                              $row[2],
                              $row[3],
                              $row[4],
                              $row[5],
                              $row[6],
                              $row[7],
                              $row[8],
                              $row[9],
                              $row[10],
                              $row[11]);
    }

  mysql_free_result($result);

  echo "<input type=submit name=submit value=loeschen>";

  echo "</form>";
?>

Zeile 11 ist : mysql_query('DELETE FROM user WHERE ID = '$_POST['delete'] ' ');

Danke,

Merti
 
Zurück