Burner: Datensatz über HTML Formular in SQL löschen

Hallo zusammen,

vielen Dank für Euere bisherige Hilfe.
Ich habe hier die loschen.php.
Wenn ich eine checkbox auswähle und dann auf löschen klicke, bekomme ich die Antwort "alles OK" zurück, stelle aber fest das der Datensatz nicht gelöscht wurde.

Wo kann der Fehler stecken,muss ich noch was in der php.ini umstellen?
Der Eintrag register_globals = on, sollte aber soweit ich weiß auf off stehen, dann allerdings funktionieren meine Einträge in die Datenbank nicht.. Hilfe!!!! ;)))

Danke und Gruß
Burner
<html>
<link rel="stylesheet" href="site.css" type="text/css">
<?php
$db=mysql_connect("localhost","","");
{
$ids = mysql_escape_string(join(' ', $_POST['del']));
$sql = "DELETE FROM tabelle WHERE id IN($ids)";
mysql_query($sql);
}
mysql_close ($db);
echo "alles OK";

?>
 <a href="dvdaus3.php" class="link">Zurück zur Übersicht</a>
</html>

  1. Moin,

    Hallo zusammen,

    vielen Dank für Euere bisherige Hilfe.
    Ich habe hier die loschen.php.
    Wenn ich eine checkbox auswähle und dann auf löschen klicke, bekomme ich die Antwort "alles OK" zurück, stelle aber fest das der Datensatz nicht gelöscht wurde.

    ja was denn wie denn?
    Was kommt denn beim ausführenden Skript an?
    Steht denn alles in der $_POST[] drin was da reingehört?
    Sprich kommt die id die es zu löschen gilt überhaupt an?
    Steht alles im Formular drin?

    Wo kann der Fehler stecken,muss ich noch was in der php.ini umstellen?

    Du solltest besser nix in der PHP.ini umstellen, du scheinst am Anfang Deiner Karriere zu stehen, und da ist es besser alles so zuz lassen wie es ist.

    Der Eintrag register_globals = on, sollte aber soweit ich weiß auf off stehen, dann allerdings funktionieren meine Einträge in die Datenbank nicht.. Hilfe!!!! ;)))

    Das hat ja nix mit obigen Problem zu tun.
    Lass die register globals mal auf off stehen und korrigiere Dein Skript.

    TomIRL

    1. hallo TomIRL,

      da hast du recht, ich arbeite ncht allzulange mit php.

      ja was denn wie denn?

      Was kommt denn beim ausführenden Skript an?
      Steht denn alles in der $_POST[] drin was da reingehört?
      Sprich kommt die id die es zu löschen gilt überhaupt an?
      Steht alles im Formular drin?

      ja, soweit ich es beurteilen kann steht alles dirn im script.

      <?php
      $db=mysql_connect("localhost","","");
      {
      $ids = mysql_escape_string(join(' ', $_POST['del']));
      $sql = "DELETE FROM tabelle WHERE id IN($ids)";
      mysql_query($sql);
      }
      mysql_close ($db);
      echo "alles OK";

      ?>

      als rückmeldung erhalte ich das "echo "alles OK"; " zurück, datensatz allerdings nicht gelöscht..

      hast du eine idee wo der fehler hier liegen kann.

      danke und gruß
      burner

      1. Moin,

        ja was denn wie denn?
        Was kommt denn beim ausführenden Skript an?
        Steht denn alles in der $_POST[] drin was da reingehört?
        Sprich kommt die id die es zu löschen gilt überhaupt an?
        Steht alles im Formular drin?

        ja, soweit ich es beurteilen kann steht alles dirn im script.

        Prüf es nach... print_r ($_POST);

        als rückmeldung erhalte ich das "echo "alles OK"; " zurück, datensatz allerdings nicht gelöscht..

        Dein Skript wird immer alles o.k. melden
        Es sind keine Bedingungen an die Ausgabe von alles o.k. geknüpft.
        Lasse Dir den SQL String ausgeben..
        Lasse Dir die SQL Fehler anzeigen:
        echo mysql_errno() . ": " . mysql_error() . "\n";
        etc etc..

        hast du eine idee wo der fehler hier liegen kann.

        Viele Ideen so lange Du dein vollständiges Skript nicht mal irgenwo hochlädst und zwar inclusive des Formulars, kann ich nur erahnen wo das Problem liegen könnte, weil Du keine Fehler abfängst, und damit auch keine aussagekräftigen Informationen hast.
        Weder für mich noch für dich selbst.

        TomIRL

        1. hallo TomIRL,

          hier sämtliche scripte:
          da sind sämtliche infos die benötigt werden um das problem zu lösen.
          kannst du mir auch sagen was du von meinen scripten hälst, würde gern ein feedback zu hören.

          dank dir

          gruß
          burner

          auslese script, greift auf datenbank zu und listen alles auf.

          <h2>Filme</h2>

          <script language="JavaScript">function import_dvd(){ MeinFenster =
           window.open("importdvd.php", "Zweitfenster", "width=650,height=250,scrollbars");
           MeinFenster.focus();}</script>
           <b>&nbsp;<a href="javascript:import_dvd()"importdvd1.php" class="link">Film hinzufügen</a>
               <?php
                   $db=mysql_connect("localhost","","");
                   $ergebnis=mysql_db_query("test", "select * from dvd order by titel");
                   $anzahl=mysql_num_rows($ergebnis);
                   mysql_close($db);
                   print $anzahl . "Filme gespeichert";

          ?>
            <form name="form1" method="post" action="loeschen.php">
                 <table border="1" width="100%">
                 <tr>
                   <th></th>
             <th>Titel</th>
                   <th>Typ</th>
                   <th>Kategorie</th>
                   <th>Language</th>

          </tr>
                <?php
                   for ($i=0;$i<$anzahl;$i++) {
                     $id = mysql_result($ergebnis, $i, "id");
               $check = "<input type="checkbox" name="del[]" value="<?=$id?>">";
                     $tit = mysql_result($ergebnis, $i, "titel");
                     $typ = mysql_result($ergebnis, $i, "typ");
                     $kat = mysql_result($ergebnis, $i, "kategorie");
                     $lan = mysql_result($ergebnis, $i, "language");

          print "<tr><td>".$check."<td>".$tit."</td><td>".$typ."</td><td>".$kat."</td><td>".$lan."</td></tr>\n";
                 }

          ?>
                </table> <br>
              <input type="submit" name="loeschen" value="Ausgewählte löschen">
              </form>
              </body>
          </html>

          dann das formular:
          <html>
             <head>
               <title>DVD Eintrag</title>
                  </head>

          <body bgcolor="#CCFFFF">
               <h3>Film eintragen</h3>
               <form name="eintragen" action="dvdein.php" method="post">
                 <table border="1" width="50%">
                   <tr>
              <th>Titel</th>
                     <td><input type="text" name="titel" size="80" /></td>
                   </tr>
                   <tr>
                     <th>Typ</th>
                     <td><select name="typ">
                      <option value="DVD">DVD</option>
                            <option value="VCD">VCD</option>
                            <option value="SVCD">SVCD</option>
                            <option value="AVI">AVI</option>
                <option value="VHS">VHS</option>
                         </select>
                     </td>
                   </tr>
                   <tr>
             <th>Kategorie</th>
                     <td><select name="kategorie">
                            <option value="Horror">Horror</option>
                            <option value="Action">Action</option>
                            <option value="Comedy">Comedy</option>
                            <option value="Musik">Musik</option>
                <option value="Unterhaltung">Unterhaltung</option>
                <option value="Science Fiction">Science Fiction</option>
                <option value="Zeichentrick">Zeichentrick</option>
                         </select>
                     </td>
                      </tr>
                   <tr>
             <th>Language</th>
                     <td><select name="language">
                            <option value="Deutsch">Deutsch</option>
                            <option value="Englisch">Englisch</option>
                            <option value="Deutsch Englisch">Deutsch Englisch</option>

          </select>

          </td>
                   </tr>
                   <tr>
                     <td><input type="submit" name="eintragen" value="Eintragen" />
                     <td><input type="reset" />&nbsp;<input class="button" type="button" onClick="window.close();return false" value="Seite schließen" />
               <td></td>
                   </tr>
                 </table>

          </body>
              </html>

          und die loeschen.php:

          <html>
          <link rel="stylesheet" href="site.css" type="text/css">
          <?php
          $db=mysql_connect("localhost","","");
          {
          $ids = mysql_escape_string(join(' ', $_POST['del']));
          $sql = "DELETE FROM tabelle WHERE id IN($ids)";
          mysql_query($sql);
          }
          mysql_close ($db);
          echo "alles OK";
          foreach ($_POST as $key => $value) {
           echo("Variable:".$key." Wert:".$value);
          }
          ?>

          <a href="dvdaus3.php" class="link">Zurück zur Übersicht</a>
          </html>

          1. Huhu Burner

            ergänze bitte bei _allen_ DB-Funktionen, also

            mysql_connet, mysql_db_query etc. eine Fehlerbehandlung.

            Die sieht im einfachsten Fall so aus

            $db = mysql_connect("localhost","","") OR die(mysql_error());

            Es sein denn Du spielst gerne "Rate mal mit Rübezahl"

            Viele Grüße

            lulu

            --
            bythewaythewebsuxgoofflineandenjoytheday
            1. »»hallo lulu,
              nein, das bestimmt nicht ;)))

              ncohmals vielen dank für deine unterstützung

              gruß
              burner

          2. Moin
            Bleiben wir mal hier um Dein erstes Problem zu lösen:

            <html>
            <link rel="stylesheet" href="site.css" type="text/css">
            <?php

            print_r ($_POST);

            $db=mysql_connect("localhost","","");
            {
            $ids = mysql_escape_string(join(' ', $_POST['del']));
            $sql = "DELETE FROM tabelle WHERE id IN($ids)";

            print ("$sql");

            mysql_query($sql);

            echo mysql_errno() . ": " . mysql_error() . "\n";

            }
            mysql_close ($db);
            echo "alles OK";

            Den Quatsch löscht Du mal fein artig wieder raus..

            foreach ($_POST as $key => $value) {
            echo("Variable:".$key." Wert:".$value);
            }
            ?>

            <a href="dvdaus3.php" class="link">Zurück zur Übersicht</a>
            </html>

            Un dann guckst Du Dir an ob alles so ist wes es soll.

            TomIRL

            1. ich glaub ich steh auf dem schlauch...
              habe schon so viel ausprobiert aber ich komme einfach nicht weiter, bin ich zu dooof??????
              will dich aber nicht irgendwie aufhalten und nerven..nur damit du es weißt

              gruß
              burner

              1. Moin,

                ich glaub ich steh auf dem schlauch...
                habe schon so viel ausprobiert aber ich komme einfach nicht weiter, bin ich zu dooof??????

                Was steht denn in der Ausgabe von print_r?

                1. hi,

                  folgende meldung erscheint.

                  Array ( [del] => Array ( [0] => ) [loeschen] => Ausgewählte löschen ) DELETE FROM dvd WHERE id IN()1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 alles OK

                  1. Moin,

                    Array ( [del] => Array ( [0] => ) [loeschen] => Ausgewählte löschen ) DELETE FROM dvd WHERE id IN()1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version

                    for the right syntax to use near ')' at line 1 alles O
                    Und?
                    Was sagt dir das?
                    Nix?
                    Gut...
                    Dann denken wir noch mal schaarf nach..
                    Du brauchst eine ID die gelöscht werden soll...
                    Es gibt aber keine ID...jedenfalls kommt keine an.
                    Also liegt Dein Problem in jenem Formular.. Du mußt irgenwie realisieren, dass dort eine id übergeben wird.

                    TomIRL

                    1. Muss ich dann nciht sagen das die checkbox den wert 1 hat, das heißt das diese aktviert ist?

                      hey, ich bin total der anfänger aber ich will es nicht aufgeben...;))

                      solnage du noch den nerv hast mit mir zu arbeiten , aber wenn du  kein bock mehr hast, dann sag es rug´hig, ok..

                      gruß
                      burner

      2. versuch es mit dert klassischen fehlersuche, indem du dein problem in teile zerlegst um so die ursache einzugrenzen. als erstes solltest du dir den inhalt des arrays $_POST anschauen. dazu fügst du hinter echo"alles OK"; folgendes ein:

        foreach ($_POST as $key => $value) {
         echo("Variable:".$key." Wert:".$value);
        }

        wenn das nichts bringt melde dich nochmal.

        gruss martin

        1. Moin,

          foreach ($_POST as $key => $value) {
          echo("Variable:".$key." Wert:".$value);
          }

          und was machst Du wenn Psot gar nicht existiert?
          Dann bekommst Du eine Fehler...
          Also lassen wir es dabei die Post Variable mit:

          print_r ($_POST); auszugeben?
          wenn Dir das zu unübersichtlich ist, dann kannst Du ja davor nochmal ein <pre> setzen.

          TomIRL