Ankündigung

Einklappen
Keine Ankündigung bisher.

Kein Formular in while Schleife?

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kein Formular in while Schleife?

    Hallo zusammen

    Ich habe es ein PHP Script welches Daten aus einer Datenbank aufgelistet anzeigt, der User soll nun einen Datensatz auswählen können und dann auf die jeweilige Detailseite gelangen auf welcher die Details zum ausgewählten Datensatz angezeigt werden:


    PHP-Code:
    $res mysql_query("select * from spiele");
    $num mysql_num_rows($res);
     
     
    $lf 1;
     while (
    $dsatz mysql_fetch_assoc($res)) {
     
               
    $spiel_name $dsatz["spiele"];
               global 
    $spiel_name;
     
               echo 
    "<a href='#' title='".$spiel_name."' onclick='document.anzeigen_form.submit();' >";
               echo  
    $dsatz['spiele']."</a>"."</td>";
     
               echo 
    "<td>" $dsatz["verlage"] . "</td>";
     
               
    $lf $lf 1;
     
               } 
    Der User klickt also auf den Link um zu den Details der Auswahl zu gelangen. Jetzt würde ich normalerweise innerhalb dieser „while Schleife“ auch ein Formular einbauen, welches dann über das Anklicken des Links gesendet wird. So kann ich die den vom User ausgewählten Datensatz erkennen und dann die Details dazu anzeigen lassen:

    PHP-Code:
    echo "<form name='anzeigen_form' method='post' action=''><input ";
               echo 
    "type='hidden' name='formularfeld_spielename' value='".$spiel_name."' ></form>"
    Das Problem ist aber dass es nicht funktioniert wenn ich dieses Formular in die Schleife einbaue. Habe ich das Formular ausserhalb der Schleife lässt es sich zwar absenden aber ich erkennen nicht welcher Datensatz der User ausgewählt hat. Die Variable $spiel_name zeigt immer den letzten Datensatz der gesamten Datenbank an.

    Hat jemand ne Idee wie ich das lösen könnte? Ich denke notfalls mit einer Session Varable, aber ich bin sicher es muss auch anders gehen.


    Vielen Dank für eure Tipps.

    LG

  • #2
    Formular: $_POST

    Alternative:
    URL: $_GET

    Beispiel:

    linkto.php?action=detail&id=3534543

    In PHP ansprechbar durch:

    $_GET['action'] (enthält detail)
    $_GET['id'] enthält (353....)

    Empfehlung: http://www.php.de/php-einsteiger/489...rundlagen.html
    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

    Kommentar


    • #3
      Hi Dark Guardian und Danke für dein Post.

      Ich glaube es gibt ein Missverständnis, ich kenne die POST und GET Methode und wie ich bei den beiden die übermittelten Variablen abfangen kann.

      Das Problem liegt abder darin dass das Formular nicht funktioniert wenn ich es innerhalb der Schleife habe. Und liegt das Formular ausserhalb der Schleife übermittelt es immer nur den letzten Datensatz der Datenbank.

      Lg

      Kommentar


      • #4
        „funktioniert nicht...“ ist keine sinnvolle Fehlerbeschreibung
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Das stimmt so wie du es machst hinten und vorne nicht.
          - Warum missbrauchst du einen Link mit Javascript um ein Formular mit einer ID als einzigem Wert abzuschicken?

          - "dass es nicht funktioniert wenn ich dieses Formular in die Schleife einbaue" sagt rein garnichts aus. Konkrete Problembeschreibung fehlt. Mögliche Ursache: Deine Formulare haben alle den gleichen Namen, wie soll Javascript das unterscheiden?

          - "Die Variable $spiel_name zeigt immer den letzten Datensatz der gesamten Datenbank an." - was auch sonst, wenn du das Formular ausserhalb der Schleife definierst? Du musst das Konstrukt das die Variable übergibt in der Schleife definieren, sonst kannst du die Datensätze nicht unterscheiden.
          [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

          Kommentar


          • #6
            Hi nikosch

            Sorry, mit funktionert nicht meine ich dass das formular offenbar nicht erkannt wird wenn es sich in der Schleife befindet. Wenn ich den Link betätige wird das Formular nämlich nicht abgeschickt.

            Lg

            Kommentar


            • #7
              hi chorn

              1.Ich "missbrauche" den Link weil mir keine andere Möglichkeit bekannt war einen anklickbaren Link zu generieren der dann wie ein Formular funktioniert und beim Klick einen Wert übermittelt. Wenn du einen besere Variante weisst, nur her damit

              2. Das Problem ist, dass das Formualar nicht abgeschikt wird und beim Betätigen des Links nichts passiert. Du meinst, wenn ich als Formular-Name eine Variable nehmen würde dies das Problem lösen?

              3. Ok, dann hat sich meine Vermutung bestätig, ich muss das Formuar in der Schleife defineiren.

              Lg und Danke

              Kommentar


              • #8
                Nö, musst Du nicht. In die Schleife gehören nur verschiedene Buttons/Inputfelder o.ä. Für den Rest reich ein Form-Tag.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  an welches script werden denn die Values gegeben?

                  Kommentar


                  • #10
                    @Harry_X,
                    Hi, ich habe eine Index Seite welche alle Inhalte anzeigt. Dann eine externe PHP Datei in welcher alle Anzeige-Funktionen definiert worden sind. In dieser externen Datei liegt auch das in meinem Post beschriebene Script.

                    Die Variable $spiel_name wird mit dem Fomrular übermittelt und von einer anderen Funktion abgefangen mit:

                    PHP-Code:
                    if (isset($_POST['formularfeld_spielename'])) {
                     function 
                    spiel_einzeln_anzeigen() {
                    ... }

                    lg

                    Kommentar


                    • #11
                      scheint mir ja n schönes durcheinander zu sein...

                      und du übergibst diese Variable an diese "externe" Datei, die dann die Funktion nur im Bedarfsfalle definiert?
                      Ist das sinnvoll?
                      Aber wo wird dann deine Variable an genau diese Datei übergeben? das seh ich nicht

                      Kommentar


                      • #12
                        Hi
                        Der Aufbau mag als Durcheinander wirken, das liegt daran dass ich noch PHP Angänger bin. Alle Funktionen in einer externen Datei zu definieren und die Index Datei schlank zu halten schien mir sinnvoll.

                        Klar, ich könnte die if-Schleife auch innerhalb der Funktion definieren wenn das besser ist. Das Problem liegt aber nicht dort beim "abfangen" der Variable (denke ich) sondern beim Versenden vom Formular.

                        Wenn du evtl. eine bessere Variane kennst wie ich über das Anklicken der Links einen Wert übermitteln kann, ich bin als Anfgänger dankbar und ganz Ohr.

                        Lg

                        Kommentar


                        • #13
                          du hast die Frage nicht beantwortet.

                          um es kurz zu machen: ich hab den Verdacht, daß es sehr wohl funktioniert, nur hat das keine Auswirkungen auf dein script, so daß dir wieder dasselbe angezeigt wird.
                          warum gibst du den $_POST-array nicht einfach mal aus, dann merkst du s ja

                          Kommentar


                          • #14
                            Zitat von dave303 Beitrag anzeigen
                            1.Ich "missbrauche" den Link weil mir keine andere Möglichkeit bekannt war einen anklickbaren Link zu generieren der dann wie ein Formular funktioniert und beim Klick einen Wert übermittelt. Wenn du einen besere Variante weisst, nur her damit
                            Seltesam... mir ist so als könne man mit der GET-Übertragungsmethode Variablen via Link ohne Formular übergeben.

                            Daher verstehe ich nicht wozu du das Formular brauchst wenn du eh nur einen Wert aus der Datenbank übertragen willst.

                            Ich glaube es gibt ein Missverständnis, ich kenne die POST und GET Methode und wie ich bei den beiden die übermittelten Variablen abfangen kann.
                            Scheinbar nicht.
                            "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                            Kommentar


                            • #15
                              Crossposting: Formular in while Schleife? - PHP Scripte Tutorials Jobs und vieles mehr
                              [URL]http://hallophp.de[/URL]

                              Kommentar

                              Lädt...
                              X