Einfacher Button zum löschen

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

  • Einfacher Button zum löschen

    Hallo zusammen,

    ich lese meine Daten aus der mySQL Datenbank aus und schreibe diese in eine Tabelle. Zusätzlich habe ich zu jeder Zeile einen Button zum löschen des Datensatzes angelegt. Leider funktioniert dieser nicht. Ich seh irgendwie den Fehler nicht. Ich hoffe jemand kann mir helfen.

    PHP-Code:
    <?php

    // Löschen
    if(isset($_POST['delete']))
    {
    mysqli_query("DELETE FROM daten WHERE id='".$_POST['id']."'") OR die(mysqli_error());
    echo 
    "<strong>Datensatz erfolgreich gelöscht</strong>";
    }

    $sql "SELECT * FROM daten";

    // Anfrage an die DB schicken und die Rueckmeldung in eine Variable ablegen
    $abfrageergebnis mysqli_query($db$sql);

    //Anzahl der Einträge ausgeben
    $anzahl mysqli_num_rows$abfrageergebnis );
    echo 
    "<div class=\"datensatz\">$anzahl Einträge:</div>\n";

    // Tabelle definieren:
    echo "<table id=\"report\" class=\"tablesorter\" cellspacing='1'>\n";

    // Kopfzeilen der Tabelle anlegen:
    echo "<thead id=\"report\"><tr>
            <th>id</th>
            <th><span class=\"ausgabeStarttermin\">Starttermin</th>
            <th><span class=\"ausgabeBemerkung\">Bemerkungen</th>
            <th><span class=\"ausgabeLoeschen\">Loeschen</th>
            <th><span class=\"ausgabeEditieren\">Editieren</th></tr></thead>"
    ;


    // Ab hier werden die Datensaetze zeilenweise ausgeben
    while ($datensatz mysqli_fetch_array$abfrageergebnis ))
      {  
              echo 
    '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
              echo
    " <tr>";
            echo
    "    <td>".htmlspecialchars$datensatz['Starttermin'] )."</td>";
            echo
    "    <td>".htmlspecialchars$datensatz['Notizen'] )."</td>";
            echo 
    '<td><input type="hidden" name="id" value="'.$datensatz['id'].'" /></td>','<td><input type="submit" name="delete" value="Entfernen" /></td>';
              echo
    "    <td>"."'Editieren</a></td>";
              echo
    " </tr>";
            echo 
    "</form>";   
      } 
    echo 
    "</table>\n"// Tabelle schließen
    mysqli_close($db);
    ?>

  • #2
    var_dump($_POST)!

    Kommentar


    • #3
      nach eigenen Erfahrungen ...
      PHP-Code:

      function form() {
         
      $aus='<form action="'.$PHP_SELF.'" method="post">'
         
      $aus.='<input type="hidden" name="sent" value="2">';  
         
      $aus.='<input type="hidden" name="datensatz" value="'.$datensatz['id'].'">'//ID
         
      $aus.='<input type="submit" value="Löschen">';
         return 
      $aus;

      und aufruf des ganzen mit
      PHP-Code:
         if ($_POST[sent]==2) {
            
      $erg=delete(); // die führt das DELETE from tabelle WHERE id=_POST[datensatz] aus
         
      }
         echo 
      '<html><head>';
         echo 
      '</head><body><div align=center>';
         echo 
      form(); // das Formular der Funktion form einblenden
         
      echo '</div></body></html>';

      [font=Verdana]
      Wer LESEN kann, ist klar im Vorteil!
      [/font]

      Kommentar


      • #4
        Danke für deine schnelle Antwort.

        Kommentar


        • #5
          Hallo,

          irgedwie bringt mich das nicht wirklich weiter, oder ich sehe den Wald vor leuter Bäumen nicht... Ich würde gern nochmal auf var_dump($_POST) eingehen. Wie und wo müsste ich das den einbauen? Das könnte ja eine schnelle Lösung des Problems sein.

          LG

          Kommentar


          • #6
            Hi.

            Zum Beispiel direkt vor

            PHP-Code:
            mysqli_query("DELETE FROM daten WHERE id='".$_POST['id']."'") OR die(mysqli_error()); 
            streuner
            Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
            der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

            "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

            Kommentar


            • #7
              bei meinem Code-Beispiel .. natürlich vor

              if ($_POST['sent'])==2) { .....
              [font=Verdana]
              Wer LESEN kann, ist klar im Vorteil!
              [/font]

              Kommentar


              • #8
                hmm ich habe es nun davor gesetzt. Es funktioniert aber trotzdem nichts. Nach Klick auf den Button tut sich gar nichts.

                Kommentar


                • #9
                  Wie sieht denn dein Code mitlerweile aus?
                  http://hallophp.de

                  Kommentar


                  • #10
                    @MExitus: Du hast nicht mal irgendeine Ausgabe?

                    streuner
                    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
                    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

                    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

                    Kommentar


                    • #11
                      So sieht es nun aus.

                      PHP-Code:
                      <div id="gesamtausgabe">

                      <?php
                      // Löschen

                      if(isset($_POST['delete']))
                      {
                      var_dump($_POST);
                      mysqli_query("DELETE FROM daten WHERE id='".$_POST['id']."'") OR die(mysqli_error());
                      echo 
                      "<strong>Shop erfolgreich gelöscht</strong>";
                      }

                      $sql "SELECT * FROM daten";

                      // Anfrage an die DB schicken und die Rueckmeldung in eine Variable ablegen
                      $abfrageergebnis mysqli_query($db$sql);

                      //Anzahl der Einträge ausgeben
                      $anzahl mysqli_num_rows$abfrageergebnis );
                      echo 
                      "<div class=\"datensatz\">$anzahl Einträge:</div>\n";

                      // Tabelle definieren:
                      echo "<table id=\"report\" class=\"tablesorter\" cellspacing='1'>\n";

                      // Kopfzeilen der Tabelle anlegen:
                      echo "<thead id=\"report\"><tr>
                              <th>id</th>
                              <th><span class=\"ausgabeStarttermin\">Starttermin</th>
                              <th><span class=\"ausgabeBemerkung\">Bemerkungen</th>
                              <th><span class=\"ausgabeLoeschen\">Loeschen</th>
                              <th><span class=\"ausgabeEditieren\">Editieren</th></tr></thead>"
                      ;


                      // Ab hier werden die Datensaetze zeilenweise ausgeben

                      while ($datensatz mysqli_fetch_array$abfrageergebnis ))
                        {  
                                echo 
                      '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
                                echo
                      " <tr>";
                                echo
                      "    <td>".htmlspecialchars$datensatz['id'] )."</td>";
                              echo
                      "    <td>".htmlspecialchars$datensatz['Starttermin'] )."</td>";
                              echo
                      "    <td>".htmlspecialchars$datensatz['Notizen'] )."</td>";
                              echo 
                      '<td><input type="hidden" name="id" value="'.$datensatz['id'].'" /></td>','<td><input type="submit" name="delete" value="Entfernen" /></td>';
                                echo
                      "    <td>"."'Editieren</a></td>";
                                echo
                      " </tr>";
                              echo 
                      "</form>";   
                        } 
                      echo 
                      "</table>\n"// Tabelle schließen
                      mysqli_close($db);
                      ?>
                      </div>

                      Kommentar


                      • #12
                        @Streuner Doch, die Tabelle mit Inhalten wird tedellos angezeigt. Nur der Button zum löschen geht halt net.

                        Kommentar


                        • #13
                          Ähm

                          PHP-Code:
                                    echo"    <td>"."'Editieren</a></td>"
                          Warum schreibst Du das " immer direkt ans echo? Da fehlt das öffnende <a href=... zudem und was soll das ' ?

                          streuner
                          Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
                          der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

                          "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

                          Kommentar


                          • #14
                            Platziere das var_dump() mal ganz am Anfang des Scripts!
                            Und schau dir die Ausgabe nach dem Absenden des Formulars an!

                            Kommentar


                            • #15
                              @streuner

                              Ja, du hast Recht. Das habe ich in der Zwischenzeit bereits geändert. Hat aber mit dem Problem nichts zu tun.

                              Zudem habe ich das var_dump($_POST); direkt ganz oben im Skript. Es liefert folgende Ausgabe: array(0) { }

                              Kommentar

                              Lädt...
                              X