Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenübertragung zwischen jQuery und PHP mittels POST

Einklappen

Neue Werbung 2019

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

  • Datenübertragung zwischen jQuery und PHP mittels POST

    Hallo,

    an sich habe ich die Datenübertragung mittels einiger Tutorials und Beispielanalysen schon einigermaßen hinbekommen, nur leider wird aus einer mit PHP generierten Formular-Liste (d. h. der Code erzeugt mehrere Formulare*-für jedes Mitglied eines) nur der erste gewünschte Wert (Mitgliedsnummer) übertragen bzw. zurückgegeben
    *
    PHP-Code:
    echo "<form action='/' id='sForm'>";
        echo 
    "<input type='hidden' name='eingabe' value='1' />";
        echo 
    "<input type='text' size='5' name='Mitgliedsnummer' id='Mitgliedsnummer' value= '$zeile[ben_key]'>";    
        echo 
    "<input type='submit' name='Submit_Save' value='Anpassen' class='lightbox_triggerP'>";
        
    //
        
    echo "</form>"
    Meine jQuery-Funktion überträgt die per POST gesendeten Daten in ein verstecktes div und von da aus in eine Lightbox, die sich beim Absenden des Formulares öffnet und die Daten anzeigt:
    Code:
    <script>
    var $form = $( this ),
        term = $form.find( "input[name='Mitgliedsnummer']" ).val();
    
      $(".lightbox_triggerP").mouseenter(function(){
    	
        $.post("user_show.php", 
        {
    			name:"Testname",
    			Mitgliedsnummer: term
        },
        function(data,status){
          //alert("Data: " + data + "\nStatus: " + status);
    			//
    		
    			$("#div1").html("Data: " + data + "\nStatus: " + status);
    			
        });
    		
      });//lightbox_triggerP
    </script>
    hier noch der relevante Codeauszug aus der aufgerufenen PHP:

    PHP-Code:
    $name $_POST['name'];
                        
    $mitgliedsnummer $_POST['term'];
                         
                         
    print_r($_POST);//Was wurde per Post übergeben?
                        
    echo "<br>";
                        if(
    $_POST['eingabe'] == 1)
      {
        echo 
    "Name: $name<br />";
            echo 
    "Mitgliedsnummer: $mitgliedsnummer<br />";
      }
                        
    //Variablen werden  nur mit print_r($_POST); angezeigt, warum nicht mit $name = $_POST['name'];
                        //$mitgliedsnummer = $_POST['term']; ...? 
    Wie bekomme ich es hin, das beim Klick auf das jeweilige Formular auch die jeweilige Mitgliedsnummer angezeigt wird?
    Bin sehr dankbar für erklärende Hinweise und Codebeispiele, will es richtig lernen,
    VG AY1379


  • #2
    (d. h. der Code erzeugt mehrere Formulare*-für jedes Mitglied eines)
    Dann erzeugst du aber nicht valides HTML, denn deine Form benutzt (genau wie das Inputelement "Mitgliedsnummer") jedesmal wieder die selbe ID.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      Dann erzeugst du aber nicht valides HTML, denn deine Form benutzt (genau wie das Inputelement "Mitgliedsnummer") jedesmal wieder die selbe ID.
      danke erst mal für die Antwort, doch es wird eine jeweils individuelle andere ID in jedem Formular angezeigt, die dann übertragen werden soll
      hier ein Ausschnitt:
      in dem Input steht die jeweilige ID

      Kommentar


      • #4
        PHP-Code:
        $mitgliedsnummer $_POST['Mitgliedsnummer']; 
        So auf kurzem Rüberguck könnts das sein.
        Relax, you're doing fine.
        RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

        Kommentar


        • #5
          Zitat von VPh Beitrag anzeigen
          PHP-Code:
          $mitgliedsnummer $_POST['Mitgliedsnummer']; 
          So auf kurzem Rüberguck könnts das sein.
          ja hatte ich auch gerade gesehen und korrigiert, ($mitgliedsnummer = $_POST['term'] nur werden diese gar nicht angezeigt auch der Testname nicht;
          nur print_r($_POST); erzeugt die Ausgabe

          ... falls ich das falsch verstanden hatte, ich habe es auch damit probiert-was vorher, ohne die jQuery-Funktion mit reinem PHP übertragen wurde und auch funktionierte
          nur brauche ich Ausgabe der Seite in der Lightbox, deshalb via jQuery,
          die Variable wird auch übertragen aber eben nur vom 1. Formular, beim 2., 3. ... wird auch die ID des 1. angezeigt

          jetzt habe ich den Testname doch hinbekommen, doch es wird so in der Lightbox angezeigt, egal welches Formular ich anklicke: Array ( [name] => Testname [Mitgliedsnummer] => 53 )

          Kommentar


          • #6
            Ich meine nicht die ID aus der Datenbank, sondern die ID des HTML Elements...
            Code:
            <form action='/' id='sForm'>
                             ^^^^^^^^^^

            Code:
            <script>
            var $form = $( this ),
                term = $form.find( "input[name='Mitgliedsnummer']" ).val();
            Debugge mal die $form, ich denke nicht, das es die "richtige" ist (ich denke, es ist nichtmal eine Form, sondern der Body des Dokuments. )
            Daher rührt auch dein Problem, das immer nur die Daten der ersten Form angezeigt werden (es sind die, die als erstes gefunden werden, denn der find() sucht das erste Element mit dem Namen "Mitgliedsnummer")
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              sorry für die sicherlich Totlachfrage, aber was muss ich genau machen wenn ich "debuggen" soll??

              ansonsten müsste man so etwas wie $("body").find("form") machen?
              Ich dachte, das "this" das jeweilige Formular aufruft.

              Kommentar


              • #8
                habe nach dem recherchieren nach "debugging" sowohl
                PHP-Code:
                 error_reporting (E_ALL E_STRICT);
                ini_set ('display_errors' 1); 
                eingesetzt, wie auch
                PHP-Code:
                var_dump ($_POST); 
                ,
                kein Ergebnis

                Kommentar


                • #9
                  du musst auch dein JavaScript debuggen und nicht PHP. Du kannst dir $form mit console.log($form) ausgeben. aber ich kann dir gleich sagen, dass dein Selektor dein Bodyelement selektiert und du deswegen nur das erste Form-Tag zurückbekommst. Wurde hier aber schon gepostet.
                  Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                  Kommentar


                  • #10
                    Code:
                    $(".lightbox_triggerP").mouseenter(function(){
                    Hiermit bindest du einen Eventhandler an alle Buttons mit dieser class, das sind ein paar (Dutzend? Hundert?)
                    Soweit sogut.

                    Innerhalb des Eventhandlers wird "this" umgebogen auf eben dieses Element (den Button, an den das Event gebunden wurde).

                    Von dort aus müsste man (theoretisch) an das Parent Element kommen (welches die Form sein müsste).

                    Und DANN würde ein $form.find() vermutlich auch das jeweils richtige Element finden können...
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      bevor ich hier postete, hatte ich den Code innerhalb der Funktion auch schon aus eben diesen Überlegungen heraus probiert, was gar nicht funktionierte- kann natürlich auch ein Syntaxproblem sein, bin da eben noch nicht so firm
                      und laut W3school- Dokumentation findet das "find" alle untergeordneten Elemente

                      Kommentar


                      • #12
                        und laut W3school- Dokumentation findet das "find" alle untergeordneten Elemente
                        Ja, untergeordnete... fragt sich halt immer "wovon untergeordnet?". Deswegen sagte ich auch, debugge es mal um zu sehen, was dein "this" ursprünglich überhaupt ist.
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          habe es mit verschiedenen Varianten versucht z. B.
                          Code:
                          $(".lightbox_triggerP").mouseenter(function(){
                          	var input_minr = $(this);
                          		 var input_minr = input_minr.parents();
                              term = input_minr.find( "input[name='Mitgliedsnummer']" ).val();
                              $.post("benutzer_show.php", 
                              {
                                
                          			name:"Testname",
                          			Mitgliedsnummer: term
                              },
                              function(data,status){
                                //alert("Data: " + data + "\nStatus: " + status);
                          			$("#div1").html("Data: " + data + "\nStatus: " + status);
                              });
                          		
                            });   //lightbox_triggerP
                          es ergibt genau die gleich Ausgabe

                          Kommentar


                          • #14
                            var input_minr = input_minr.parents();
                            Das liefert ALLE Parents des aktuellen Elements... Du möchtest aber nur auf den direkten Vorfahren zugreifen, aka
                            Code:
                            elem.parent(); // ohne s hinten!
                            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                            Kommentar


                            • #15
                              habe das s weg gelassen den cache geleert doch es ergibt immer noch das Gleiche, es wird immer die 1. angezeigt

                              Kommentar

                              Lädt...
                              X