Achim: Verstecktes Formular ausführen

Hallo,
habe das problem das ich mit einem Klick auf das erste Formular
das erste ausführen möchte und danach sofort den button des zweiten
Button (dieser soll aber versteckt sein) aktivieren möchte.

Ist das möglich?
Ich weiss es ist etwas unsauber aber das erste Formular erstreckt sich über die ganze seite (hätte zuviel Arbeit dies zu ändern)
nun muss ich am ende der seite also des ersten Formulares ein verstecktes formular einfügen wo der submit automatisch ausgeführt wird wenn das erste Formular abegarbeitet ist.

Erstes Formular:
<form method=post name=zaehlformular action='/index.php'><input type=hidden name=smsaction value=smsgetaction><input type=hidden name=zaehlformular ><input type=hidden name=ses value="24">
<input type=hidden name=cga value="18">

<input class=buttonstyle2 type=submit name=submitbutton[sms_send] value="absenden">

</form>

Zweites wenn möglich verstecktes Formular :
<form name="email_notify" action="/index.php" method="post">
<input type="hidden" name="ses" value="23" />
<?php
echo '<input name="form[to]" type="hidden" value="'.$mailstring. '" />';

echo '<input $buttonstyle2 type="$strButtonType"  name=submitbutton[email_send] value="absenden"/>";
?>

Gruss und danke Achim

  1. habe das problem das ich mit einem Klick auf das erste Formular
    das erste ausführen möchte und danach sofort den button des zweiten
    Button (dieser soll aber versteckt sein) aktivieren möchte.

    Ist das möglich?

    wenn ich mal annehme, daß beide formulare in der seite enthalten sind, auf die sie auch verweisen (sich also alles innerhalb eines dokuments abspielt) sollte es doch recht einfach dadurch zu erreichen sein, daß du dem ersten formular noch ein verstecktes feld als kontrollvariable beifügst, sagen wir $form2_show. die kriegt bei der übermittlung des ersten formulares einen wert zugewiesn, z.b. 1.

    somit kannst du das ganze dann über abfragen steuern:

    if ($form2_show == 0)
    {
    erstes formular anzeigen
    }
    else
    {
    erstes formular verstecken
    }

    if ($form2_show ==1)
    {
    zweites formular/button zeigen
    }
    else
    {
    zweites formular/button verstecken
    }

    zum verstecken einfach alle input-felder jeweils als versteckte felder.

    kommt das hin?

    gruß,

    matthias

    1. Hallo,

      if ($form2_show ==1)
      {
      zweites formular/button zeigen
      }
      else
      {
      zweites formular/button verstecken
      }

      zum verstecken einfach alle input-felder jeweils als versteckte felder.

      kommt das hin?

      Nicht ganz
      das zweite Formular soll eigentlich gar nicht erscheinen sondern soll nur im hintergrund ausgeführt werden als ob beim ergebnis von 1 im hintergrund ein submit geklickt wird. Der Button darf also nicht erscheinen er soll nur ausgeführt werden

      Gruss Achim

      1. Hallo Achim!

        So wie es aussieht, möchtest Du nicht zwei Formulare submitten, sondern als Resultat des Submits des ersten Formulars zwei Aktionen auslösen (zB Danke-Seite und eMail-Benachrichtigung).

        Wenn dem so ist, dann wäre ein Formular durchaus ausreichend und die serverseitige Umsetzung anzuraten!

        mfg

        norbert =:-)

        1. Hallo Achim!

          So wie es aussieht, möchtest Du nicht zwei Formulare submitten, sondern als Resultat des Submits des ersten Formulars zwei Aktionen auslösen (zB Danke-Seite und eMail-Benachrichtigung).

          Genau so solls sein

          Wenn dem so ist, dann wäre ein Formular durchaus ausreichend und die serverseitige Umsetzung anzuraten!

          Sorry aber das verstehe ich jetzt nicht ganz (in Bezug auf mein versteckten submit)

          Es soll ja nach dem ersten submit eine weiters formular automatisch durchlaufen und am ende soll dort ein submit ausgelöst werden

          Es ist so.
          Normal habe ich ein Formualr was die daten eines Benutzers anzeigt und beim klick auf einem button werden diese daten an ein weiters e-amil-formualr übergeben.

          Diesen zwischenschritt möchte ich vermeiden.
          Ich möchte nun also einen Benutzer anlegen, mit submit bestätigen und dann solllen die daten an ein e-mail-formualr übergeben werden.
          Problem ist ich möchte einfach dieses andere formular (was den user anzeigt) verwenden aber eben halt versteckt.
          da dieses in einer function steckt bräuchte ich fast nichts ändern.

          serverseitig schon nur wie schaffe ich es das der submit automatsich ausgelöst wird.
          if submit=1 dann klick submit oder so?
          Sorry aber kann es anders nicht erklären

          Gruss Achim

          1. Hallo Achim!

            Ich helfe ja gerne - aber ich verstehe Dein Problem leider nicht - also nochmal zum mitdenken ;-)

            Normal habe ich ein Formualr was die daten eines Benutzers anzeigt und beim klick auf einem button werden diese daten an ein weiters e-amil-formualr übergeben.

            Wieso zeigst Du Daten in einem Formular an, welche Du dann nach dem Submit in ein weiteres Formular übergibst? Aber gut - soweit noch kein Problem ...

            Diesen zwischenschritt möchte ich vermeiden.

            Welchen Zwischenschritt? Hast Du nun ein Formular oder zwei? Und je nachdem - warum überhaupt, wenn Du es so offenbar nicht möchtest? Also entweder hast Du zwei Formulare und möchtest das nicht - oder nur eins, das irgendwie nicht so tut wie es soll ...

            Ich bzw. wir würden uns leichter tun, wenn Du entweder einen Link oder eine Beschreibung dessen geben könntest, was Du _eigentlich_ bezweckst.

            Warte auf Antwort,

            mfg

            norbert =:-)

            1. Hi Norbert,

              erstmal vielen dank für deine Geduld.

              Hier ist fast der komplette Code
              wie er normalerweise aufgrufen wird, was ich aber in diesem Teil meiner Seite vermeiden möchte.
              Grund: Mich nervt das wenn ich 1000 mal auf einem submit klicken muss bis ich am Ziel bin.

              Dieses Formular ist für die Benutzereingabe ist eigentlich noch uninteressant, davon werden später sowieso nur die eingegeben Daten benötigt.
              <form>

              submit

              </form>

              das würde es passieren wenn es so aufgerufen wird wie meinen anderen seiten.

              der Benutzer sieht nun eine Seite mit den eingegeben Daten
              am Ende
              sieht er zwei submit-buttons
              einen für sms und einen für mail
              Wenn er da drauf klickt gelangt er auf die jweilige seite für sms-senden oder email-senden wo aber seine daten mit übertragen werden.
              Also z.B steht dann schon im Body der mail der ganze schlonz drin wie benutzerdaten usw.
              Hier der Code dieser Benutzer-Anzeige-seite mit den zwei Buttons
              bzw. die function

              <?php

              function getEMailMsgForm($strEMailAdr, $strSubject, $strMsgBody, $bShowButton=true)
              {
                    global $ses, $buttonstyle2;
                    $ret = '<form name="email_notify" action="index.php" method="post">';
                    $ret .= '<input type="hidden" name="ses" value="' . $ses . '" />' ;
                    $ret .= '<input name="form[to]" type="hidden" value="' . $strEMailAdr . '" />';
                    $strMsgBody = base64_encode($strMsgBody);
                    $ret .= '<input name="form[body]" type="hidden" value="' . $strMsgBody . '" />';
                    $strSubject = base64_encode($strSubject);
                    $ret .= '<input name="form[subject]" type="hidden" value="' .$strSubject . '" />';
                    $ret .= '<input name="form[param_base64]" type="hidden" value="yes" />';
                    $ret .=  CG_Context("post", "mail", "compose");
                    if($bShowButton)
                    {
                        $ret .= getEMailNotifyButton("submit");
                    }
                    $ret .= "</form>";
                    return $ret;
              }

              function getEMailNotifyButton($strButtonType="submit")
              {
                  global $buttonstyle2;
                  $strJavaScript = "";
                  if ($strButtonType!="submit")
                  {
                      $strJavaScript = "onClick="document.forms['email_notify'].submit()"";
                  }
                  return "<input $buttonstyle2 type="$strButtonType" $strJavaScript value="" . strCOMGATEpharse("Notify EMail") . "" />";
              }

              function getSMSNotifyButton($strButtonType="submit")
              {
                  global $buttonstyle2;
                  $strJavaScript = "";
                  if ($strButtonType!="submit")
                  {
                      $strJavaScript = "onClick="document.forms['sms_notify'].submit()"";
                  }
                  return "<input $buttonstyle2 type="$strButtonType" $strJavaScript value="" . strCOMGATEpharse("Notify SMS") . "" />";
              }

              function getSMSMsgForm($strMessage, $bShowButton=true)
              {
                    global $ses, $buttonstyle2;
                    $ret = '<form name="sms_notify" action="index.php" method="post">';
                    $ret .= '<input type="hidden" name="ses" value="' . $ses . '" />' ;
                    $strMessage = base64_encode($strMessage);
                    $ret .= '<input name="AutoMessage" type="hidden" value="' . $strMessage . '" />';
                    $ret .= CG_Context("post", "sms", "main");
                    if($bShowButton)
                    {
                        $ret .= getSMSNotifyButton();
                    }
                    $ret .= "</form>";
                    return $ret;

              }
              ?>

              Wenn ich dies Function aufrufe nach meinem ersten <form></form> dann erscheint noch ein zusätzlicher Button auf der seite also muss der Benutzer nochmals klicken um dann letzendlich auf die E-Mail-sende-seite zu gelangen wo dann auch seine Daten in den body des email-formulars übertragen werden die er dann versenden kann.

              Warum ich das kompliziert mache?
              Diese Function hat ein Bekannter von mir geschrieben die in dem system verwendet wird. Dieser mein das ich den Zwischenschritt brauche. Ich meine nein, ich diese Function auch so verwenden (mit einer kleinen Änderung) das die seite automatisch aufgerufen wird.

              In Meinem ersten Formular habe ich eine checkbox drin die der Benutzer anklicken kann wenn er den angelegten neuen benutzer per E-mail benachrichtigen möchte, klickt er es an so soll dann diese function aufgerufen werden, wo meine benutzerdaten an das e-amil-formualr übertragen werden (an die E-mail-sende-seite)

              Hoffe das war ein wenig ausführlicher.

              wahrsxcheinlich ist es total easy zu lösen nur drücke ich mich falsch aus.
              Sorry

              Gruss achim

              1. Hallo Achim!

                Entweder bin ich zu begriffstützig oder Du denkst zu kompliziert ;-)

                Wenn ich Dich richtig verstanden habe, soll der Benutzer was eingeben. Dann soll entweder eine SMS- oder eine eMail-Benachrichtigung erfolgen.

                Also wozu ein zweites Formular und zwei Submit-Buttons?

                Lass Dein Formular so wie es ist - füge zwei Checkboxen hinzu (Benachrichtigung via "SMS" und/oder "Mail"). Durch Klick auf "OK" (=submit) schickst Du alles an Dein Script. Dort schnell mal überprüft, ob alle notwendigen Daten auch da sind und je nach Status der jeweiligen Checkbox eine SMS oder eine Mail (oder beides!) senden.

                Dazu braucht man weder ein zweites Formular, noch dieses (per JavaScript) automatisch submitten (was nicht immer funktionieren muss).

                Am besten ist wohl, Du postest einen Link zu den Seiten - dann sprechen wir auch vom selben und ich kann Dir besser helfen ...

                mfg

                norbert =:-)

          2. Hallo Achim!

            Wenn der Code, den Du gepostet hast soweit ok ist, dann möchtest Du beim Submit ...

            1.) etwas mit einem "zaehlformular" tun

            und gleichzeitig

            2.) eine Email-Benachrichtigung senden.

            Beide Formulare werden an "/index.php" gesandt - also warum nicht dort auch beides realisieren:

            <form method="post" name="zaehlundmailformular" action="/index.php">
            <input type="hidden" name="smsaction" value="smsgetaction">
            <input type="hidden" name="ses" value="24">
            <input type="hidden" name="cga" value="18">
            <input type="hidden" name="recipient" value="mailstring">
            <input class="buttonstyle2" type="submit" name="submit" value="absenden">
            </form>

            (Dieses Formular besteht nur aus hidden-Feldern und einem Submit-Button!)

            In "/index.php" dann

            1.) irgendwas tun (zählen)
            2.) Mail an "$recipient" senden
            3.) Sogar noch eine Danke-Seite zurück senden ;-)

            Passt das so? Wenn nicht, nochmal posten ...

            mfg

            norbert =:-)