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

  • AY1379
    hat ein Thema erstellt Datenübertragung zwischen jQuery und PHP mittels POST.

    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

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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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!

    Einen Kommentar schreiben:


  • AY1379
    antwortet
    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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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.

    Einen Kommentar schreiben:


  • AY1379
    antwortet
    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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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...

    Einen Kommentar schreiben:


  • Geromel
    antwortet
    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.

    Einen Kommentar schreiben:


  • AY1379
    antwortet
    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

    Einen Kommentar schreiben:


  • AY1379
    antwortet
    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.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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")

    Einen Kommentar schreiben:


  • AY1379
    antwortet
    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 )

    Einen Kommentar schreiben:


  • VPh
    antwortet
    PHP-Code:
    $mitgliedsnummer $_POST['Mitgliedsnummer']; 
    So auf kurzem Rüberguck könnts das sein.

    Einen Kommentar schreiben:


  • AY1379
    antwortet
    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

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    (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.

    Einen Kommentar schreiben:

Lädt...
X