Stefan Muenz: Lesertip: Formulare mit mehreren Submits

Liebe Forumer,

ein SELFHMTL-Leser hat mir einen interessanten Tip gegeben. Ausprobiert hab ich es allerdings noch nicht:

Man kann in einem Formular mehrere Submit-Buttons mit unterschiedlichen Namen definieren, Beispiel:
<input type="submit" name="adressat" value="An Chef senden">
<input type="submit" name="adressat" value="An Abteilungsleiter senden">

Im Datenstrom, den ein CGI-Script von so einem Formular erhaelt, werden auch die name-value-Paare der Submit-Buttons uebertragen. Durch entsprechende Auswertung kann das Script dann unterschiedlich reagieren. Im Beispiel koennte es also etwa die Formulardaten in aufbereiteter Form entweder an die Mailadresse des Chefs oder des Abteilungsleiters senden, je nachdem, welcher "value" fuer den Namen "adressat" ermittelt wird.

Auf diese Weise kann man also "Auswahlmoeglichkeiten" sofort mit Submit-Funktionalitaet verknuepfen.

viele Gruesse
  Stefan Muenz

  1. Hi Stefan,

    ein SELFHMTL-Leser hat mir einen interessanten Tip gegeben. Ausprobiert hab ich es allerdings noch nicht:

    betrachte es als verifiziert :-)
    Dieser "Trick" ist nicht unbedingt neu, wenn auch nur selten angewandt. Auf den ersten Blick würde man nicht darauf kommen, daß es funktioniert, schließlich hat ein Formular immer "den" Submit-Button. Wenn man aber mal darüber nachdenkt, ist das Verhalten nur konsequent. Jedenfalls halte ich es mittlerweile für logisch :-)

    Allerdings weiß ich nicht genau, seit wann (also bei welchen Browsern) das funktioniert, obwohl ich mal etwas hörte, daß allein die Formularfähigkeit ausreicht. Kann das jemand mal bitte mit älteren Browsern testen?

    Cheatah

    1. Hi,

      Allerdings weiß ich nicht genau, seit wann (also bei welchen Browsern) das funktioniert, obwohl ich mal etwas hörte, daß allein die Formularfähigkeit ausreicht. Kann das jemand mal bitte mit älteren Browsern testen?

      warum schreibe ich eigentlich nicht einfach ein Testprogramm, _bevor_ ich das abschicke? Grml. Also: http://cheatah.net/cgi-bin/formcheck.pl Einfach auf die Buttons klicken und sehen, ob die Folgemeldung richtig ist.

      Cheatah

      1. Hi,

        ... http://cheatah.net/cgi-bin/formcheck.pl Einfach auf die Buttons klicken und sehen, ob die Folgemeldung richtig ist.

        Cheatah

        Moin,

        mit IE 3.02 (4.70.1300) funzt es

        Swen

        1. Hi,

          ... http://cheatah.net/cgi-bin/formcheck.pl Einfach auf die Buttons klicken und sehen, ob die Folgemeldung richtig ist.

          mit IE 3.02 (4.70.1300) funzt es

          oki, also ab Netscape 3.01 und IE 3.02; letzteres läßt vermuten, daß auch Netsi 2 es kann. Hat jemand Opera?

          Cheatah

          1. oki, also ab Netscape 3.01 und IE 3.02; letzteres läßt
            vermuten, daß auch Netsi 2 es kann. Hat jemand Opera?

            <Opa-Modus>
            Ich verwende diese Möglichkeit bereits seit Jahren, teilweise auf sehr populären Websites. Es gab bei meinen eigenen Tests nie einen Browser, der damit Probleme hatte, oder einen Nutzer, der sich beschwerte.
            </Opa-Modus>

            :-)

            Grüße,

            Hanno

          2. oki, also ab Netscape 3.01 und IE 3.02; letzteres läßt vermuten, daß auch Netsi 2 es kann. Hat jemand Opera?

            Cheatah

            Hallo alle miteinander

            Also mit Opera 3.5 geht es auch :)

            -Sonny

      2. Hi,
        Gibt es ActiveX nur unter Windows?

        Stellst du dich blöd oder tust du nur so? ActiveX ist M$-$cientology proprietär!

        Sehr schön browserabhängig. Funktioniert mit immerhin genau einem Programm.

        Das über 80% aller Pc-Nutzer nutzen.

        Windows-User sollten sich dem Willen von M$ fügen und das Ganze
        Windows haben, wie unsicher es auch konzipiert ist.

        Ooops, sie haben es ja schon.

        (Wie war doch gleich der Verzeichnis-Separator auf dem Mac?)
        Es könnte ja auch um ein UNIX-Programm gehen ...

        Keine Sorge, das geht weder auf Mac noch auf irgend einem Unix.

        CU

        W. Pichler

  2. ein SELFHMTL-Leser hat mir einen interessanten
    Tip gegeben. Ausprobiert hab ich es allerdings noch nicht:
    Man kann in einem Formular mehrere Submit-Buttons
    mit unterschiedlichen Namen definieren

    Hmm. Verzeih die altkluge Reaktion, aber das hielt ich eigentlich für einen richtig alten Hut.

    Da jemand nach der Kompatibiltät mit älteren Browsern fragte: Ich kann mich noch daran erinnern, dass es 1996 mit Netscape 2.0 problemlos lief. Da dieses Verhalten auf mehrere Submit-Buttons per Standard festgelegt ist, würde mich alles andere auch nur schwer wundern.

    Ach ja, auf http://www.hanno.de/casa/de/calendar.html verwende ich z.B. so ein mehrfach-Formular. Einfach mal auf "Ändern" klicken. Bitte keine unsinnigen Einträge dort im Kalender machen, er wird gebraucht. ;-)

    1. Hallo Hanno

      Hmm. Verzeih die altkluge Reaktion, aber das hielt ich eigentlich für einen richtig alten Hut.

      Verziehen! ;-)
      Aber was fuer dich vielleicht ein alter Hut sein mag, muss es nicht fuer andere sein. Nachdem ich das so noch nirgends dokumentiert gefunden habe, hielt ich den Hinweis hier fuer angebracht.

      viele Gruesse
        Stefan Muenz

  3. Man kann in einem Formular mehrere Submit-Buttons mit unterschiedlichen Namen definieren, Beispiel:
    <input type="submit" name="adressat" value="An Chef senden">
    <input type="submit" name="adressat" value="An Abteilungsleiter senden">
    Im Datenstrom, den ein CGI-Script von so einem Formular erhaelt, werden auch die name-value-Paare der Submit-Buttons uebertragen. Durch entsprechende Auswertung kann das Script dann unterschiedlich reagieren.

    Das verwende ich auch.

    Was ich schade finde, ist, daß der Value-Parameter gleichzeitig den angezeigten *und* den übertragenen Wert festlegt, während man bei anderen Formular-Elementen den VALUE separat im Tag setzen kann und den angezeigten Wert außerhalb des Tags hinschreibt.

    Mein Problem ist nämlich, daß ich HTML-Seiten via Perl mehrsprachig generieren muß und dabei die Texte auf den Buttons natürlich in Abhängigkeit von der aktuellen Sprache oder gar aufgrund eines Eintrags in irgendeiner Meldungsdatei dynamisch gesetzt werden.
    Aber natürlich will mein CGI-Skript möglichst einfach feststellen, auf welchen Knopf der Anwender gedrückt hat, und dafür nicht irgendwelche Texte parsen müssen ... hm ...