Ankündigung

Einklappen
Keine Ankündigung bisher.

2 gleiche Formulare einzeln auswerten

Einklappen

Neue Werbung 2019

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

  • 2 gleiche Formulare einzeln auswerten

    Thread Name = Problem
    Ich habe 2 gleiche Formulare mit den selben Input-Eigenschaften und 2 unterschiedliche Submit

    PHP-Code:
    if(isset($_POST['6347326382']))
    {
         
    //mit SQL abspeichern
    }

    <
    form id="form1" method="post">
         <
    input type="name" name="name">
         <
    input type="submit" name="6347326382">
    </
    form>

    <
    form id="form2" method="post">
         <
    input type="name" name="name">
         <
    input type="submit" name="3892318932">
    </
    form
    Wenn ich jetzt auf den ersten Submit klicke, speichert dieser Code den Inhalt $_POST['name'] 2x in der Datenbank, sprich, er holt sich auch das Input vom anderen Formular.

    Wie löse ich das problem, das nur dieses eine Formular verarbeitet wird? Ich könnte es mit action="" lösen, aber dann springt er automatisch zu dieser Seite, was ich verhindern möchte (benutze Ajax, um mehrere Formulare auf einer Seite zu speichern)?

  • #2
    Ein Formular kann mehr wie ein Submit-Knopf haben.
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Hi,

      du könntest z.B. ein Hidden Input machen und so differenzieren:
      Code:
      <form id="form1" method="post">
           <input type="hidden" name="whichForm" value="form1">
           <input type="name" name="name">
           <input type="submit" name="6347326382">
      </form>
      PHP-Code:
      if(!empty($_POST["form1"])
      form1 stuff... 

      Kommentar


      • #4
        tr0y hat doch schon einen Weg gezeigt. Zudem können input-Elemente mit den selben Namen nicht zweimal im POST-Array erscheinen. Irgendwas stimmt da nicht, was uns Jumper93 hier erzählt.

        Kommentar


        • #5
          Zitat von jspit Beitrag anzeigen
          tr0y hat doch schon einen Weg gezeigt. Zudem können input-Elemente mit den selben Namen nicht zweimal im POST-Array erscheinen. Irgendwas stimmt da nicht, was uns Jumper93 hier erzählt.
          Ich hab was vergessen Stimmt

          PHP-Code:
          if(isset($_POST['6347326382']))
          {
               
          $sql "
                    INSERT INTO 'table'
                    SET name = 
          $_POST['name']
               "
          ;
          }

          <
          form id="form1" method="post">
               <
          input type="name" name="name">
               <
          input type="submit" name="6347326382">
          </
          form>

          if(isset(
          $_POST['3892318932']))
          {
               
          $sql "
                    INSERT INTO 'table'
                    SET name = 
          $_POST['name']
               "
          ;
          }
          <
          form id="form2" method="post">
               <
          input type="name" name="name">
               <
          input type="submit" name="3892318932">
          </
          form

          mein Javascript dazu:
          PHP-Code:
          $(function() {
              $(
          'form').submit(function(event) {
                  
          event.preventDefault();
                  
                  
          //Holt sich den Namen von Submit Button, da der mit serialize() nicht mit gegeben wird
                  
          var submit_name = $('input[type="submit"]').get(0).name;
                  
                  
          //Verbindet aus den Formular die Daten + den Submit Name
                  
          var post_array = $( this ).serialize()+'&'+submit_name+'=1';

                  
          //Gibt mir die URL wieder
                  
          var url = $(location).attr('href');
                  $.
          posturlpost_array);
              });
          }); 

          Kommentar


          • #6
            Zitat von tr0y Beitrag anzeigen
            Ein Formular kann mehr als ein Submit-Knopf haben.
            Grade von dir...
            [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

            Kommentar


            • #7
              Zitat von ApoY2k Beitrag anzeigen
              Grade von dir...
              Ich krieg des net raus.. schon versucht ( A form may have as many submits as needed ).. Hab irgendwie 'nen als-fetisch.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Also habt ihr auch keine Lösung zu meinen Problem, richtig?

                Kommentar


                • #9
                  Hä, wieso? Klar: Zwei submit-buttons und die überprüfen anstatt zwei Formulare.
                  [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

                  Kommentar


                  • #10
                    Auf deutsch? Mir ist unklar was dein Lösungsweg jetzt ist.

                    Kommentar


                    • #11
                      Deaktivier mal Javascript in deinem Browser, ob es dann immer noch doppelt eingetragen wird. Hab den Verdacht, das einmal per PHP und einmal per Javascript deine Info geschickt wird.
                      Wozu überhaupt der Javasriptkram? tr0y und ApoY2K geben dir die Marschrichtung vor.

                      Edit: So schwer? Mach ein Formular mit 2 Submitbuttons. Schau dir $_POST an, dann siehst du wie du das auseinanderfädeln kannst.

                      Kommentar


                      • #12
                        Zitat von jspit Beitrag anzeigen
                        Edit: So schwer? Mach ein (einziges) Formular mit 2 Submitbuttons. Schau dir $_POST an, dann siehst du wie du das auseinanderfädeln kannst.
                        Um das nochmal zu verdeutlichen.
                        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                        Kommentar


                        • #13
                          Hallo jumper93,

                          bin nicht sicher, ob ich verstanden habe, wo Dein Problem eigentlich liegt.
                          Mit dem JS-Code bekommst Du immer nur den Namen des Submit-Buttons der ersten form, auch wenn Du den zweiten klickst (wegen get(0)).
                          Bei mir auf Safari findet sich im $_POST immer schön das richtige name-Feld und der geklickte submit (ohne den JS-Code). Die anderen Felder sind nicht enthalten.
                          Es gibt allerdings Browser, die handeln das anders, d.h. die schicken tatsächlich immer alle submits.
                          Ich hab' mir wegen dieses Problems mal so geholfen:
                          Code:
                          <button type="submit" id="abcdefg" onclick="this.value='';this.name='abcdefg';">...
                          Das sorgt in allen Browsern bei denen JS zugelassen ist dafür, dass nur ein submit-Button übertragen wird und zwar der geklickte.
                          Ich weiss allerdings im Augenblick nicht, ob bei den "doofen" Browsern neben den submit-Buttons auch alle Feldinhalte aus allen Formularen gesendet werden….

                          Gruß
                          joergy

                          Kommentar


                          • #14
                            Das sollte eigentlich nicht möglich sein was du erlebst, da durch die W3C-Empfehlung seit Urzeiten Form-Submits in allen Browsern immer das DOM-Node nutzen das zum Form gehört und nicht wild durchs DOM iterieren ob da nicht noch andere Felder sind die ne Runde Request-Urlaub wollen.

                            Nur mal so von der Browser-Seite gesehen.
                            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                            Kommentar

                            Lädt...
                            X