Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Statement hinter Formular

Einklappen

Neue Werbung 2019

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

  • SQL Statement hinter Formular

    Guten Abend zusammen,
    ich stehe seit Stunden auf dem Schlauch.

    Gibt es eine Möglichkeit, auf "$row->anr" hinter dem Formular zuzugreifen?
    Ich brauche den Integer Wert, der im Select - Option ausgewählt wurde, um danach ein SQL Statement zum löschen des Tupels zu schreiben.

    PHP-Code:
    //SQL Dropdown Form
    echo '<form action="loeschen.php" method="POST">';
    echo 
    '<select name="test">';
    while(
    $row mysqli_fetch_object($ergebnis)){

        echo 
    '<option>' $row->anr ." "$row->name '</option>';

    }

    echo 
    "</select>";
    echo 
    '<input type="submit" name="absenden" value="loeschen">';
    echo 
    "</form>"
    Hinter dem Formular habe ich es bisher nicht geschafft auf den benötigten Wert zuzugreifen.
    Wenn ich über den Namen von Select arbeite, bekomme ich logischerweise einen kompletten String ausgegeben, aber ich brauche die ID für mein SQL Statement:

    //$loesch = mysqli_query($mysqli, "DELETE FROM artikel WHERE anr = '$row->anr'");

    Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken. Ich hänge seit zwei Tagen daran fest.

    Vielen Dank im Voraus

    p.S. wenn es eine Möglichkeit gibt, das SQL Statement direkt in das Formular einzubinden, ohne das meine kompletter Tabelleninhalt gelöscht wird, wäre ich auch sehr zufrieden.

  • #2
    Zitat von Bullebeusken Beitrag anzeigen
    Gibt es eine Möglichkeit, auf "$row->anr" hinter dem Formular zuzugreifen?
    Ich brauche den Integer Wert, der im Select - Option ausgewählt wurde, um danach ein SQL Statement zum löschen des Tupels zu schreiben.
    Ich glaube du hast noch ein Verständnisproblem: du erzeugst ein Formuar mit einem Select-Feld und einem Submit-Button (bzw. submit-input, <button> wäre besser, ist jetzt aber mal egal). Das Formular wird zum Browser geschickt und dem User angezeigt woraufhin dieser einen Wert auswählt. Das Script das die Daten aus der Datenbank holt und in dem $row->anr zur Verfügung steht ist jetzt längst beendet. Das Abschicken des Formulars startet dann ein neues Script in dem der zu löschende Wert in $_POST['test'] zu finden ist - diesen Wert musst du in deine WHERE-Bedingung des Lösch-Querys einbauen (Behandlung des Kontextwechsels nicht vergessen!).

    Kommentar


    • #3
      Vielen Dank für Deine ausführliche Antwort, das ist sehr nett!
      Mein Problem mit $_POST['test'] ist, das ich einen String zurück bekomme, mit zwei unterschiedlichen Spalten aus dem SQL Dump.
      Beispiel: String aus test: 1 Hammer 30 Gramm
      Für mein Drop Query brauche ich aber nur die "1" also anr.
      Wenn Du mir da noch auf die Sprünge helfen könntest, wäre ich sehr happy.

      lG

      Kommentar


      • #4
        Zitat von Bullebeusken Beitrag anzeigen
        Mein Problem mit $_POST['test'] ist, das ich einen String zurück bekomme, mit zwei unterschiedlichen Spalten aus dem SQL Dump.
        Ach, jetzt verstehe ich das Problem. Du musst den option-Elementen noch ein value-Attribut geben (mit $row->anr als Inhalt), dann wird nur dieser Wert übertragen.

        Kommentar


        • #5
          Danke Dir, probiere ich gleich morgen früh aus.
          Schönen Abend!
          lG

          Kommentar


          • #6
            Guten Morgen, leider ist mein Problem nach wie vor vorhanden:
            PHP-Code:
            //SQL Dropdown Form
            echo '<form action="loeschen.php" method="POST">';
            echo '<select name="test">';
            while($row = mysqli_fetch_object($ergebnis)){

                echo '<option value="<?php echo $row->anr;?>">' . $row->anr ." ". $row->name . '</option>';

            }
            echo "</select>";
            echo '<input type="submit" name="absenden" value="loeschen">';
            echo "</form>";
            von $_POST['test'] wird folgendes übergeben: anr;?>

            Wie bekomme ich es hin, das nach drücken des submit Buttons folgender SQL Query mit "er korrekten ID "also anr" ausgeführt wird?
            mysqli_query($mysqli, "DELETE FROM artikel WHERE anr = '$row->anr'");

            Kommentar


            • #7
              Zitat von Bullebeusken Beitrag anzeigen
              von $_POST['test'] wird folgendes übergeben: anr;?>
              Dann schau dir doch mal den generierten HTML-Code dazu an. Ein wenig Eigeninitiative gehört schon dazu zum Programmieren.

              Kommentar


              • #8
                Nun, nach drei Tagen Eigeninitiative habe ich schon wirklich überall geguckt und diverse Ansätze ausprobiert.
                Und gerade diese Eigeninitiative ist es, die mich dazu bewegt hat, mir Hilfe in einem ANFÄNGER FORUM zu suchen.

                Aber ich bedanke mich an dieser Stelle dennoch für Ihre unangemessene aber wohl konstruktiv gemeinte Kritik.

                Kommentar


                • #9
                  Und auf das wichtigste bist du natürlich nicht eingegangen. Wie sieht der generierte HTML-Code aus?

                  Liebe motzen statt die Zeit in die Problemlösung stecken...

                  Kommentar


                  • #10
                    Von motzen kann nun wirklich keine Rede sein, Herr Höllenbringer.
                    Ja ich sehe, das tat ich aber auch schon vorher, das der PHP Interpreter nicht angesprochen wird und ich den Befehl als Text zurück bekomme.
                    Aber auch durch herumprobieren mit den Quotes "" als auch ' ' bekomme ich keine funktionierende Syntax hin.

                    Kommentar


                    • #11
                      Du bist doch schon in einem echo, weshalb machst du dann in #6 nochmals ein echo.

                      Kommentar


                      • #12
                        Ändere:
                        PHP-Code:
                        echo '<option value="<?php echo $row->anr;?>">' . $row->anr ." ". $row->name . '</option>';
                        In:
                        PHP-Code:
                        echo '<option value="' $row->anr '">' $row->anr ." "$row->name '</option>'
                        Wie Jonas bereits sagte, hast du im oberen Code 2 Echos drin, dass funktioniert so nicht. Als ggf. bessere Alternative zum Echo könntest du auch sprintf verwenden, da diese Funktion Platzhalter unterstützt:
                        PHP-Code:
                        sprintf('<option value="%s">%s %s</option>'$row->anr$row->anr$row->name); 

                        Kommentar


                        • #13
                          Vielen Dank liebe Leute, jetzt funktioniert es und ich kann vergleichen und eruieren, DANKE!
                          Ich wünsche Euch einen guten Start in die Woche.

                          Kommentar


                          • #14
                            echo braucht man übrigens überhaupt nicht. Es gibt in PHP den Ausgabe-Tag <?=

                            echo macht den Code meistens nur schlechter lesbar. Ich würde also davon abraten es zu verwendne.

                            Kommentar


                            • #15
                              Zitat von Zeichen32 Beitrag anzeigen
                              Ändere: […] In: […]
                              Nein! Da fehlt die Behandlung des Kontextwechsels!

                              Kommentar

                              Lädt...
                              X