Löschen von Tabeleninhalten mittels Checkboxen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Löschen von Tabeleninhalten mittels Checkboxen

    Hallo,

    ich bin schon die ganze Zeit auf der Suche nach dem Fehler in meinem Skript. Habe auch schon die Suchfunktion benutzt, aber der Fehler ist mir immer noch nicht ersichtlich.

    Ich will mir eine Datenbanktabelle auslesen lassen und über makierte Checkboxen dieausgewählten Datensätze dann löschen. Zum Testen will ich mir aber erstmal die Usernamen ausgeben lassen, die gelöscht werden sollen.

    Hier mein Skript:
    PHP-Code:
    <?
    //Includen der Dateien zum Herstellen der Datenbankverbindung
    require ("verbindung.inc");
    require ("db_functions.inc");

    $conn = Connect_DB();

    // Wenn der Submit-Button geklickt wurde ...
    if(isset($_POST['submit']))
    {
       echo "<pre>";
       print_r($_POST);
       echo "</pre>";

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

       // Für jeden markierten Datensatz
       //  den Usernamen ausgeben
       for($x=0;$x<$y;$x++)
       {
          echo "Gelöscht: $loeschen[$x]<br>";
       }
    }


    // Die vorhandenen Datensätze abrufen
     $sql = "SELECT USERNAME, NNAME
             FROM BENUTZER
             ORDER BY NAME";

       $stmt = OCIParse($conn, $sql);

       OCIDefineByName($stmt,"USERNAME",&$username);
       OCIDefineByName($stmt,"NNAME",&$nname);

       OCIExecute($stmt);
    ?>

    <form method="post" action="delete.php">
      <table width="300" border="0" cellspacing="0"
             cellpadding="0">
      <?
      // Daten anzeigen
      while($row=OCIFetch($stmt)) {

      ?>
        <tr>
          <td width="30">
            <input type="checkbox" name="loeschen[]"
                    value="<? echo $username ?>">
          </td>
          <td><? echo $username ?></td>
          <td><? echo $nname ?></td>
      </tr>
      <? } ?>
    </table>
      <br>
      <input type="submit" name="submit" value="Löschen">
    </form>
    Der Fehler liegt jetzt darin, dass er mir ausgibt, dass 0 Datensätze gelöscht werden, obwohl ich zuvor welche angeklickt habe.
    Diese werden auch richtig übergeben, denn das habe ich mir per
    PHP-Code:
    print_r($_POST); 
    ausgeben lassen. Das Ergebnis ist folgendermaßen:
    PHP-Code:
    Array
    (
        [
    loeschen] => Array
            (
                [
    0] => ABC
                
    [1] => GHI
            
    )

        [
    submit] => Löschen

    Habe auch schon hier die Suche probiert, aber die hat mir leider nicht geholfen die Stelle herauszufiltern, wo mein Fehler liegt.

    Könnte mir von euch vielleicht einer helfen?

    Dankeschön.

    Grüße,
    cerry

  • #2
    vielleicht hab ich tomaten auf den augen, aber ...
    - wo ist dein "DELETE" statement?
    - und wenns da ist, wo schickst du es an die db?
    Kissolino.com

    Kommentar


    • #3
      Hallo Wurzel,

      nein du hast keine Tomaten auf den Augen.

      Ich habe es noch nicht eingebaut, weil ich erstmal sehen wollte, ob es überhaupt richtig arbeitet. Darum will ich mir erst alle Werte ausgeben.

      Das DELETE-STATEMENT hinzubasteln ist dann nicht das Problem, aber wie soll ich löschen können, wenn ich noch nicht mal schreiben könnte

      PHP-Code:
      ...WHERE username '$loeschen[$x]' 
      , da $loeschen[$x] keine Werte ausgibt.

      Aber am Ende sieht das SQL-STATEMENT aus:
      PHP-Code:
       $sql_delete "DELETE FROM Benutzer WHERE username = '$loeschen[$x]'"
      Und dies dann an die Datenbank zu schicken mache ich dann über
      PHP-Code:
      $stmt OCIPARSE($conn$sql_delete);
      OCIEXECUTE($stmt); 
      Ich hoffe das ist so richtig, konnte es aber noch nicht ausprobieren, da ich ja keine Werte übermittelt bekomme.

      Grüße,
      cerry
      Zuletzt geändert von cerry; 04.08.2004, 13:52.

      Kommentar


      • #4
        du sprichst dein "$loeschen" eher so an:
        PHP-Code:
        echo count($_POST['loeschen']);
        echo 
        $_POST['loeschen'][0]; 
        ausserdem solltest du arraywerte nicht einfach innerhalb von "" ausgeben
        PHP-Code:
        $sql_delete "DELETE FROM Benutzer WHERE username = '$_POST['loeschen'][$x]'";
        //^^ böse
        $sql_delete "DELETE FROM Benutzer WHERE username = '".$_POST['loeschen'][$x]."'";
        //^^ gut 
        Kissolino.com

        Kommentar


        • #5
          Original geschrieben von Wurzel
          du sprichst dein "$loeschen" eher so an:
          PHP-Code:
          echo count($_POST['loeschen']);
          echo 
          $_POST['loeschen'][0]; 
          Danke dir, habe gerade festgestellt, dass ich dieses ansprechen
          PHP-Code:
          $loeschen $_POST['loeschen']; 
          am Anfang des Quellcodes beim vielen ändern gelöscht haben muss. Jetzt funktioniert es.

          Original geschrieben von Wurzel
          ausserdem solltest du arraywerte nicht einfach innerhalb von "" ausgeben
          PHP-Code:
          $sql_delete "DELETE FROM Benutzer WHERE username = '$_POST['loeschen'][$x]'";
          //^^ böse
          $sql_delete "DELETE FROM Benutzer WHERE username = '".$_POST['loeschen'][$x]."'";
          //^^ gut 
          Gilt diese Variante denn immer auch für Verwendung innerhalb von echo?

          Danke für deine Hilfe.

          Gruß,
          cerry

          Kommentar


          • #6
            jepp ... die behandlung ist ja dieselbe, ob nun echo oder die ablage in einer variablen ... alternativ kann man auch
            PHP-Code:
            $sql_delete "DELETE FROM Benutzer WHERE username = '{$_POST['loeschen'][$x]}'"
            schreiben ... ist imho aber unsauber
            Kissolino.com

            Kommentar


            • #7
              Dankeschön,

              dann werde ich gleich mal meine Skripte ändern und es ab jetzt so machen.

              Wünsche dir noch einen schönen Tag.

              Gruß,
              cerry

              Kommentar

              Lädt...
              X