2 Formulare verbinden

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

  • 2 Formulare verbinden

    Hi@all

    Weiß nicht ob hier das richtige Grundthema ist - kann auch HTML oder JS sein.

    Frage:
    Wie kann ich zwei Formulare mit nur einem Submit() verbinden ???

    Problem:
    Ich habe im Footer ein kleines Kontaktformular (Name, Telefon, eMail) welches per include in jede Seite eingebunden wird.
    Soweit so gut. Läuft !

    Jetzt habe ich eine weitere Seite in der ein weiteres Formular im Content-Bereich stehen soll (nur n paar Checkboxen).
    Ich will zusätzlichen personelle Abfragen hier vermeiden, dafür möchte ich das Footer-Formular nutzen.

    Ich hoffe es ist verständlich, wie kann ich das bewerkstelligen ?

    Ich kann das <form> Element allerdings nicht in den Kopfbereich der Seite packen, da es noch andere Seiten mit weiteren eigenständigen Formularen gibt und somit ein Einschluß stattfinden würde.

    Thx@all

  • #2
    Das lässt sich mit Javascript und jQuery lösen: http://jsfiddle.net/5hthH/4/

    In obigem Beispiel werden die Daten nun an script.php mittel $_GET übertragen.
    1123581321

    Kommentar


    • #3
      Hi, danke, das hatte ich schon gefunden, ist aber leider nicht das was ich suche.
      Ich wollte eben im oberen Teil kein extra Formular haben sondern das obige (wird verschieden erzeugt) irgendwie in das untere integrieren.
      So das ich keinen zusätzliche submit() Button brauche.

      Zur besseren Verständlichkeit mal ne kleine DEMO:
      PHP-Code:
      <?php
      # 2 Formulare gleichzeitig versenden
      ?>

      <html>
      <head>
      <title>leereseite</title>
      </head>
      <body>
      <?php
      # Überprüfung der gesendeten Formulardaten
      echo "Auswertung:<br>";
      print_r($_REQUEST);

      ?>

      <!-- Content -->
      <form name="check_form" method="post" action="">
      <input type="checkbox" name="check[]" value="01"> 01<br>
      <input type="checkbox" name="check[]" value="02"> 02<br>
      <input type="checkbox" name="check[]" value="03"> 03<br>
      <input type="checkbox" name="check[]" value="04"> 04<br>
      <input type="checkbox" name="check[]" value="05"> 05<br>
      </form>

      <hr>

      <!-- FOOTER -->
      <form id="kontakt_form" name="kontakt_form" method="post" action="2_formulare.php">
      <input type="text" name="name" value="name">
      <input type="text" name="email" value="email">
      <input type="button" value="senden" onclick="senden()" >
      </form>

      <script type="text/javascript">
      function senden(){
      document.check_form.submit();
      document.kontakt_form.submit();
      }
      </script>
      </body>
      </html>
      Leider kommt beim Absenden nur:
      Auswertung:
      Array ( [name] => name [email] => email )
      Also die Daten des oberen Formulars fehlen.
      Thx
      Zuletzt geändert von Prominenter; 20.09.2013, 10:06.

      Kommentar


      • #4
        Hi@all

        Folgender Lösungsansatz:
        PHP-Code:
        <?php
        # 2 Formulare gleichzeitig versenden
        ?>

        <html>
        <head>
        <title>Test 2 Formulare</title>
        </head>
        <body>
        <?php
        # Überprüfung der gesendeten Formulardaten
        echo "Auswertung:<br>";
        print_r($_REQUEST);
        #print_r($_POST);
        ?>

        <!-- Content -->
        <form name="check_form" id="check_form" method="post" >
        <input type="checkbox" name="check[]" value="01" /> 01<br>
        <input type="checkbox" name="check[]" value="02" /> 02<br>
        <input type="checkbox" name="check[]" value="03" /> 03<br>
        <input type="checkbox" name="check[]" value="04" /> 04<br>
        <input type="checkbox" name="check[]" value="05" /> 05<br>
        </form>

        <hr>

        <!-- FOOTER -->
        <form id="kontakt_form" name="kontakt_form" method="post">
        <input type="text" name="name" value="name" />
        <input type="text" name="phone" value="phone" />
        <input type="text" name="email" value="email" />
        <input type="button" value="senden" onclick="submitAll()" />
        </form>

        <!-- Script -->
        <SCRIPT type="text/javascript">
        /* Collect all forms in document to one and post it */
        function submitAll() 
        {
         /* Anzahl der Formulare im Document ermitteln */
         var arrDocForms = document.getElementsByTagName('form');

         /* neues virtuelles Formlar erstellen*/
         var formCollector = document.createElement('form');
         /* Eigenschaften des neuen Formulars festlegen */
         with(formCollector)
         {
          name      = "formCollector";
          id      = "formCollector";
          method = "post";
          action = "2_formulare.php";
         }

         /* Alle Formulare des Dokuments durchlaufen*/
         for(var ix=0; ix<arrDocForms.length; ix++) 
         {
          /* Funktion zum auslesen der Formularfelder aufrufen */
          appendFormVals2Form(arrDocForms[ix], formCollector);
         }
         
         /* das neue Formular zur Seite hinzufügen */
         document.body.appendChild(formCollector);
         /* das neue Formular abschicken */
         formCollector.submit();
        }

        /* Function: add all elements from ``frmCollectFrom´´ and append them to ``frmCollector´´ before returning ``frmCollector´´*/
        function appendFormVals2Form(frmCollectFrom, frmCollector) 
        {
         var frm = frmCollectFrom.elements;
         for(var ix = 0 ; ix < frm.length ; ix++) { frmCollector.appendChild(frm[ix]); }
         return frmCollector;
        }
        </SCRIPT>

        </body>
        </html>
        Leider funktioniert es irgendwie nicht richtig, es werden nicht alle Formularfelder übertragen.

        ???
        Thx for Help

        Kommentar


        • #5
          Bei dem Script, welches ich gepostet habe, kannst du natürlich einen der beiden Submit Buttons weglassen, wird dennoch funktionieren.
          1123581321

          Kommentar

          Lädt...
          X