Announcement

Collapse
No announcement yet.

Funktion zum löschen eines Datensatzes aus einer datenbank.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funktion zum löschen eines Datensatzes aus einer datenbank.

    Hallo erstmal, danke schon mal vorab ich hab jetzt folgenden Programmcode geschrieben und ich möchte jetzt den datensatz den ich uber das select auswähle mit $Post submitten, was ich hier eigtl auch gemacht habe...aber iwie funktioniert meine function datensatzLoeschen nicht...wo hab ich denn da den fehler drin?


    <?php

    function einfuegenSelect($tab, $val, $text, $def) {
    $s = "<select name="" . $val . "" id="" . $val . "">";
    require ("database.inc.php");
    $sql = "SELECT " . $val . ", " . $text . " FROM " . $tab;
    if ($stmt = $pdo->prepare ( $sql )) {
    $stmt->execute ();
    while ( $z = $stmt->fetch () ) {
    $s = $s . "<option value="" . $z[0] . """;
    if ($z[0] == $def) {
    $s = $s . " selected";
    }
    $s = $s . ">" . $z[0] . " | " . $z[1] . "</option>";
    }
    $s = $s . "</select>";

    return $s;
    } else {
    return false;
    }
    }

    function datensatzLoeschen($anr) {

    require("database.inc.php");
    $anr = $_POST["artikel"];
    $loeschen = $db -> prepare ("DELETE FROM artikel WHERE anr= $anr ");
    $loeschen->bindParam('i', $anr);
    $loeschen->execute();
    }
    ?>

    </head>
    <body>
    <?php
    if (isset($_POST["artikel"])) {
    datensatzLoeschen($_POST["artikel"]);
    echo "<h1>Artikel gelöscht!</h>";
    header("refresh:3;url=e3_artikel_loeschen.php");
    }
    else {
    ?>
    <form method="POST">
    <label for="artikel">Artikel: </label>
    <?php echo einfuegenSelect("artikel", "anr", "name", "");?> <input type="submit" value="Datensatz löschen" />
    </form>

    <?php
    }
    ?>
    </body>
    </html>

  • #2
    Was genau funktioniert denn nicht?
    Ist Deine Artikelnummer wirklich nur numerisch?

    ...und Du übermittelst
    HTML Code:
    <select name="anr" id="anr">
    fragst aber nach
    PHP Code:
    $_POST["artikel"]; 
    PHP rocks!
    Eine Initiative der PHP Community

    Comment


    • #3
      es funktioniert das löschen des ausgewählten artikels nicht...ich bekomme die liste aus der datenbank auch angezeigt nur wird leider nichts gelöscht..:-(

      Hier nochmal die Übersicht der Datenbank, ich bekomme auch alle Artikel angezeigt...nur ich kann keinen löschen, ich vermute weil dem loeschenDatensatz keine eindeutige id übergeben wird vermute ich.....
      Attached Files
      Zuletzt editiert von Superscavenger; 20.02.2019, 16:21.

      Comment


      • #4
        $loeschen->bindParam('i', $anr);
        Wer ist "i"?
        Christian

        Comment


        • #5
          Oki...deklarier des als "hier schrieb er schrott" ich habe des ganze nun nochmal überarbeitet, die löschen funktion müsste jetzt eigtl passen...trotzdem geht snicht:-(

          <!DOCTYPE html>
          <html lang="de">
          <head>
          <meta charset="uft-8" />
          <title>Artikel löschen</title>
          <?php

          function einfuegenSelect($tab, $val, $text, $def) {
          $s = "<select artikel="" . $val . "" anr="" . $val . "">";
          require ("database.inc.php");
          $sql = "SELECT " . $val . ", " . $text . " FROM " . $tab;
          if ($stmt = $pdo->prepare ( $sql )) {
          $stmt->execute ();
          while ( $z = $stmt->fetch () ) {
          $s = $s . "<option value="" . $z[0] . """;
          if ($z[0] == $def) {
          $s = $s . " selected";
          }
          $s = $s . ">" . $z[0] . " | " . $z[1] . "</option>";
          }
          $s = $s . "</select>";

          return $s;
          } else {
          return false;
          }
          }

          function datensatzLoeschen($anr) {
          require("database.inc.php");
          $sql = "DELETE FROM artikel WHERE artikel.anr = :anr" ;
          if ($stmt = $pdo -> prepare ($sql)) {
          $stmt->bindParam(':anr', $anr);
          $stmt->execute();
          }
          }
          ?>

          </head>
          <body>
          <?php
          if (isset($_POST["artikel"])) {
          datensatzLoeschen($_POST["artikel"]);
          echo "<h1>Artikel gelöscht!</h>";
          header("refresh:3;url=e3_artikel_loeschen.php");
          }
          else {
          ?>
          <form method="POST">
          <label for="artikel">Artikel: </label>
          <?php echo einfuegenSelect("artikel", "anr", "name", NULL);?> <input type="submit" value="Datensatz löschen" />
          </form>

          <?php
          }
          ?>
          </body>
          </html>

          Comment


          • #6
            Warum wertest du nicht mal den Rückgabeparameter aus?

            http://php.net/manual/de/mysqli-stmt.execute.php

            Oder weitergehende Meldungen
            $stmt->error
            http://php.net/manual/de/mysqli-stmt.error.php
            Zuletzt editiert von Christian Marquardt; 24.02.2019, 14:09.
            Christian

            Comment

            Working...
            X