Lösch-Buttons

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

  • #16
    Hi Fang,
    wenn du im Formular zu jedem Datensatz einen Lösch-Button haben willst, so kannst du diesen als Array definieren,
    und als Index die ID des Datensatzes. Kleines Beispiel einer Namenstabelle mit id, Vorname, Nachname:
    PHP-Code:
    <?php
    /*
    * Datensätze abfragen und im Formular ausgeben
    */
    $result=mysql_query("select * from tabelle2 order by Nachname");
     
    ?>
    <form action="" method="post">
    <table>
    <?php 
    while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
     echo 
    "<tr>";
     echo 
    "<td><input type=\"text\" name=\"id[$row[id]]\" value=\"$row[id]\"></td>";
     echo 
    "<td><input type=\"text\" name=\"vorname[$row[id]]\" value=\"$row[Vorname]\"></td>";
     echo 
    "<td><input type=\"text\" name=\"nachname[$row[id]]\" value=\"$row[Nachname]\"></td>";
     echo 
    "<td><input type=\"submit\" name=\"cmd[$row[id]]\" value=\"Löschen\"></td>";
     echo 
    "</tr>"
    }
    ?>
    </table>
    </form>
    Schau dir im Browser den Quelltext an. Da siehst du, dass passend zu den Vor-/Nachnamen ein Button mit dem gleichen Index existiert.
    Wenn du das Formular durch Klick auf einen der Buttons absendest und mit print_r($_POST['cmd']) das Button-Array ausgibst, so wirst du sehen,
    dass NUR der eine, angeklickte Button gesendet wurde:
    Array
    (
    [19] => Löschen
    )
    Jetzt kannst du einfach mit der Funktion key den Index des Buttons (des Datensatzes) abfragen und deine Löschabfrage formulieren:
    PHP-Code:
    /*
    * Wenn ein Button gesendet wurde . . . 
    */
    if(isset($_POST['cmd'])){
     
    /*
     * . . . wird mit der Funktion key der Schlüssel des Buttons ausgelesen.
     */
     
    $buttonID=key($_POST['cmd']);
     
    /*
     * Mit diesem Schlüssel kann man jetzt den Datensatz ansprechen, der zu
     * diesem Button im Formular gehört bzw. den man löschen will (Als Beispiel).
     */
     
    $vorname=$_POST['vorname'][$buttonID];
     
    $nachname=$_POST['nachname'][$buttonID];
     echo 
    "<p>Es wurde Button mit der ID $buttonID gedrückt</p>";
     echo 
    "<p>Name: $nachname$vorname</p>";
     
    /*
     * Lösch-Abfrage
     */
     
    $query="delete from tabelle2 where id=$buttonID";
     echo 
    '<p>"'.$query.'"</p>';
     
    mysql_query($query);

    Gruß
    Günni
    Zuletzt geändert von Guenni61; 18.02.2012, 13:10.

    Kommentar


    • #17
      Wow, vielen Dank, das hat mir schon enorm weitergeholfen^^
      Jetzt komm ich in die if-Bedingung rein und die ID stimmt sogar,
      nur der Lösch-Befehl funktioniert nicht.

      Also ich habe die Struktur jetzt ein wenig geändert und die if-Abfrage
      ganz am Anfang verschoben, da man sonst nicht sehen konnte, ob das
      funktioniert hat, da die Seite ja neu geladen wird. Jedenfalls sind das
      jetzt Zeile 1-16:
      PHP-Code:
      <?php

                $db 
      mysql_connect("localhost","root","") or die ("Fehler beim Verbinden mit der Datenbank.");
                
      mysql_select_db("klassenarbeiten") or die ("Fehler beim Öffnen der Datenbank");

                if(isset(
      $_POST['delete']))
                {
                  
      $buttonID key($_POST['delete']);

                  echo 
      "<p>$buttonID</p>";

                  
      $loesch "DELETE FROM fragen WHERE frid = '$buttonID'";
                }
      ?>
      Das einzige was nicht funktioniert ist der MySQL-Befehl, woran könnte das liegen?
      Richtige Datenbank ist ausgewählt (klassenarbeiten), richtige Tabelle ist
      ausgewählt (fragen) und frid ist der Primärschlüssel in der Tabelle, stimmt
      also auch...

      EDIT: Hat sich erledigt, es muss so aussehen:
      PHP-Code:
      $loesch mysql_query("DELETE FROM fragen WHERE frid = '$buttonID'"); 
      Zuletzt geändert von Fang; 18.02.2012, 22:50.

      Kommentar

      Lädt...
      X