Basinator: 2 form actions deklarieren..?

Moin!

Ich habe ein Formular, möchte aber zwei verschiedene Absenden-Buttons verwenden, die in unterschiedlichen Dateien enden sollen. Wie stelle ich das an?

Alternativ: Kann ich mit einem Submit-Button einen Wert übermitteln, also nur, wenn dieser Button gedrückt wird?

  1. Moin Basinator,

    Ich habe ein Formular, möchte aber zwei verschiedene Absenden-Buttons verwenden, die in unterschiedlichen Dateien enden sollen. Wie stelle ich das an?

    Gar nicht.

    Alternativ: Kann ich mit einem Submit-Button einen Wert übermitteln, also nur, wenn dieser Button gedrückt wird?

    Ja, das geht. Gib deinen Submit-Buttons Namen. Wenn sie einen Namen haben, wird ihr Wert übermittelt. z. B. so:

    <input type="submit" name="action1" value="Go!"><input type="submit" name="action2" value="Go, too!">

    LG,
     CK

    1. Ich habe ein Formular, möchte aber zwei verschiedene Absenden-Buttons verwenden, die in unterschiedlichen Dateien enden sollen. Wie stelle ich das an?

      Gar nicht.

      Mit JavaScript gibt es schwindlige Lösungen :) aber den namen des Submit-Buttons auszuwerten ist die zielführendere Lösung.

      1. Moin suit,

        Mit JavaScript gibt es schwindlige Lösungen :)

        Schwindelig ist mir schon oft genug, da brauch ich nicht auch noch JS für ;-)

        LG,
         CK

  2. Hallo

    Ich habe ein Formular, möchte aber zwei verschiedene Absenden-Buttons verwenden, die in unterschiedlichen Dateien enden sollen. Wie stelle ich das an?

    Da ich schon vor ähnlichen Fragen stand zwei Lösungen (ich weiß ja nicht, was Du da abschicken willst), die ich schon angewendet habe:
    1. Je nach Zieladresse sollen unterschiedliche Felder übermittelt werden: Anordnung der Felder, so dass Du zwei Formulare mit je einem eigenen Submit-Button hast (sorry, es gibt wirklich Leute die da nicht drauf kommen).
    2. Die selben Felder sollen je nachdem an unterschiedliche Zieladressen übermittelt werden (z.B. registrieren.php und anmelden.php): Leg zwei identische Formulare mit position:xyz genau übereinander und mach einen (oder zwei) Javascript-Button, der per document.all.form_xy.style.display = "none" vs. "inline" bzw. "block" auswählt, welches Formular der Benutzer ausfüllt.

    Kann sein, dass Dir das für Dein Problem was nutzt, kann sein das nicht.
    Du müsstest in letzterem Fall vielleicht etwas genauer erklären, worum es sich bei Deinen Formularen handelt.

    Grüße *Alex*

    1. Mahlzeit *Alex*,

      Leg zwei identische Formulare mit position:xyz genau übereinander und mach einen (oder zwei) Javascript-Button, der per document.all.form_xy.style.display = "none" vs. "inline" bzw. "block" auswählt, welches Formular der Benutzer ausfüllt.

      *Ganz* *sicher* http://de.selfhtml.org/javascript/objekte/all.htm@title=nicht:

      "Das all-Objekt gehört nicht zum offiziellen JavaScript-Sprachstandard. Es wurde von Microsoft für den Internet Explorer 4.0 implementiert. Das all-Objekt funktioniert zwar auch prima innerhalb von Script-Bereichen, die mit "JavaScript" ausgezeichnet sind, doch es ist bislang eigentlich nur Bestandteil von JScript, dem Microsoft-Derivat von JavaScript. [...] Nichtsdestoweniger sollten Sie all nur verwenden, um den Internet Explorer 4.0 zu bedienen."

      Basinator sollte vielmehr aktuellen und zeitgemäßen JavaScript-Code schreiben - wenn überhaupt.

      MfG,
      EKKi

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. Musste doch weniger machen, als ich dachte.

      Ein anderer Ansatz könnte ggf. eine IF-Funktion in PHP in Kombination mit zwei Submit-Buttons & $_GET sein.

      1. Musste doch weniger machen, als ich dachte.

        Ein anderer Ansatz könnte ggf. eine IF-Funktion in PHP in Kombination mit zwei Submit-Buttons & $_GET sein.

        Es gibt keine if-Funktionen in PHP - noch gibt es sie in anderen Sprachen ;) genausowenig gibt es if-Schleifen.

        Aber das ist genau das worauf Christian Kruse hinauswollte: den Namen des Submitbuttons auswerten - das macht man eleganterweise mit einer switch-Anweisung da es nur eine Bedingung mit mehreren Ausgängen gibt. Denkbar wäre zwar auch eine if/else-Verzweigung, allerdings könnte man das undefinierte Verhalten nicht mehr sauber abfangen, wenn jemand sein eigenes Ding durchzieht (ein Spambot z.B.). Eine if/else-if-Verzweigung hingegen ist nur dann sinnvoll, wenn jede Verzweigung verschiedenen Bedingungen hat.

        1. Moin suit,

          Es gibt keine if-Funktionen in PHP - noch gibt es sie in anderen Sprachen ;) genausowenig gibt es if-Schleifen.

          Das stimmt so nicht. In Lisp z. B. ist if ganz offiziell eine Funktion und sprach-theoretisch ist if auch in PHP nur ein Sonderfall einer Funktion.

          LG,
           C*klugscheiss*K

          1. Es gibt keine if-Funktionen in PHP - noch gibt es sie in anderen Sprachen ;) genausowenig gibt es if-Schleifen.

            Das stimmt so nicht. In Lisp z. B. ist if ganz offiziell eine Funktion und sprach-theoretisch ist if auch in PHP nur ein Sonderfall einer Funktion.

            Dem muss man aber entgegenbringen, dass als Funktion heutzutage eine Subroutine verstanden wird.

            Lisp hingegen stammt aus einer Zeit wo man grade mal den Sprung[1] geschaft hat sich von "GOTO" bzw. ähnlichen Konstrukten zu verabschieden ;)

            [1] pun intended

            1. Moin suit,

              Dem muss man aber entgegenbringen, dass als Funktion heutzutage eine Subroutine verstanden wird.

              Nein. DU verstehst das darunter. Das ist der Fehler, den viele machen. Unterhalte dich mal mit jemandem aus dem Compiler- oder Interpreterbau. Oder mit einem Computer-Linguisten.

              LG,
               CK

              1. Hallo,

                Dem muss man aber entgegenbringen, dass als Funktion heutzutage eine Subroutine verstanden wird.
                Nein. DU verstehst das darunter. Das ist der Fehler, den viele machen. Unterhalte dich mal mit jemandem aus dem Compiler- oder Interpreterbau. Oder mit einem Computer-Linguisten.

                Die werden sagen, eine Funktion ist ein Stück Programmcode, der
                 * aus dem linearen Ablauf herausgelöst ist
                 * optional Platzhalter (Argumente) für bestimmte Ausdrücke vorsieht
                 * einen Wert als Ergebnis zurückliefert
                 * von verschiedenen Stellen des Programms mit unterschiedlichen Werten für die Platzhalter
                   aufgerufen werden kann
                 * syntaktisch überall als Ausdruck ("expression") eingesetzt werden kann

                Vor allem den sehr wichtigen letzten Punkt kann die if-Anweisung in vielen Programmiersprachen nicht erfüllen. Über die anderen könnte man eventuell noch diskutieren.

                Ciao,
                 Martin

                --
                Die letzten Worte des Privatdetektivs:
                Jetzt wird es mir klar: SIE sind der Mörder!
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Moin Martin,

                  Vor allem den sehr wichtigen letzten Punkt kann die if-Anweisung in vielen Programmiersprachen nicht erfüllen.

                  Implementations-Detail.

                  LG,
                   C„Der Rest ist rechnen ;-)”K

                  1. Vor allem den sehr wichtigen letzten Punkt kann die if-Anweisung in vielen Programmiersprachen nicht erfüllen.

                    Implementations-Detail.

                    Welches bei interpretierten Sprachen vermutlich aber arg in die Performance gehen kann - bei kompilierten wohl eher weniger.

                    1. Moin suit,

                      also mal abgesehen davon, dass ich den Eindruck habe, dass der Smiley nicht gesehen wird ;-)

                      Welches bei interpretierten Sprachen vermutlich aber arg in die Performance gehen kann - bei kompilierten wohl eher weniger.

                      Kann man so nicht sagen. Ruby & Lisp können das z. B. durchaus:

                        
                      my_val = if x == 1 then  
                        10  
                      elsif x == 2 then  
                        20  
                      end  
                      
                      

                      LG,
                       CK

                      1. also mal abgesehen davon, dass ich den Eindruck habe, dass der Smiley nicht gesehen wird ;-)

                        Die Nase hat irgendwas von 1999 ;)

                        Welches bei interpretierten Sprachen vermutlich aber arg in die Performance gehen kann - bei kompilierten wohl eher weniger.

                        Kann man so nicht sagen. Ruby & Lisp können das z. B. durchaus:

                        my_val = if x == 1 then
                          10
                        elsif x == 2 then
                          20
                        end

                          
                        Ist aber auch schwer zu lesen - sowas würde man in PHP z.B. auch per Ternärer-Operator machen können, aber das ist wohl eher unleserlich und nicht ganz dasselbe - aber sowas würde ich nichtmal noch ansatzweise als Funktion durchgehen lassen.  
                          
                        $my\_val = (($x == 1) ? 10 : (($x == 2 ? 20 : NULL)));
                        
                        1. Moin suit,

                          also mal abgesehen davon, dass ich den Eindruck habe, dass der Smiley nicht gesehen wird ;-)

                          Die Nase hat irgendwas von 1999 ;)

                          Ich bin halt ein alter Sack.

                          Ist aber auch schwer zu lesen

                          Ansichtssache.

                          aber sowas würde ich nichtmal noch ansatzweise als Funktion durchgehen lassen.

                          $my_val = (($x == 1) ? 10 : (($x == 2 ? 20 : NULL)));

                          Befreie deinen Geist, junger Padawan. ;-) Klar kann man das als Funktion sehen. Eher sogar noch als das if-Statement. Sie nimmt drei Argumente (die Bedingung, den True-Zweig und den False-Zweig) und liefert einen Wert zurück. Sie kann (nahezu) überall eingesetzt werden und verzweigt den Programmfluss.

                          LG,
                           CK

                          1. Die Nase hat irgendwas von 1999 ;)

                            Ich bin halt ein alter Sack.

                            Wie alt, wenn ich fragen darf?

                            Befreie deinen Geist, junger Padawan. ;-) Klar kann man das als Funktion sehen. Eher sogar noch als das if-Statement. Sie nimmt drei Argumente (die Bedingung, den True-Zweig und den False-Zweig) und liefert einen Wert zurück. Sie kann (nahezu) überall eingesetzt werden und verzweigt den Programmfluss.

                            In dieser form ja - aber in der "herkömmlichen" Schreibweise ist das weit angenehmer zu lesen und schon weit von einer Funktion entfernt.

                            Aber du hast ja recht :)

                            1. Moin suit,

                              Wie alt, wenn ich fragen darf?

                              Klar darfst du fragen ;-) Ich bin im Januar 1982 geboren.

                              In dieser form ja - aber in der "herkömmlichen" Schreibweise ist das weit angenehmer zu lesen und schon weit von einer Funktion entfernt.

                              Naja, das ist es ja gerade. Die spezifische Syntax sagt wenig darüber aus, um was für ein Konstrukt es sich handelt. Ein Operator z.B. ist ja auch nur ein Spezialfall einer Funktion. Du musst unterscheiden zwischen einer Funktion im Implementations-Sinn (die Implementation in diesem Fall wäre PHP) und dem Begriff Funktion aus der theoretischen Informatik. Auf dem Unterschied basierte doch der ganze Spaß. Witze erklären ist unlustig :-(

                              LG,
                               CK

                              1. Wie alt, wenn ich fragen darf?

                                Klar darfst du fragen ;-) Ich bin im Januar 1982 geboren.

                                Da bin ich mit Februar 82 ja noch ein junger Hüpfer :p

                                Naja, das ist es ja gerade. Die spezifische Syntax sagt wenig darüber aus, um was für ein Konstrukt es sich handelt. Ein Operator z.B. ist ja auch nur ein Spezialfall einer Funktion. Du musst unterscheiden zwischen einer Funktion im Implementations-Sinn (die Implementation in diesem Fall wäre PHP) und dem Begriff Funktion aus der theoretischen Informatik. Auf dem Unterschied basierte doch der ganze Spaß. Witze erklären ist unlustig :-(

                                Die Implementierung und die Ausprägung in der Sprache zu vergleichen ist aber besonders bei PHP schwierig, da weiß man nie so genau was die dahinter eigentlich so einbauen (wenn man nicht nachsieht). Machen Dinge werden einfach brav direkt auf C-Ebene durchgeschliffen, andere Dinge die auf Seiten PHP einfach aussehen haben hingegen extreme Codemonster im hintergrund. filter_var() ist so ein Kandidat.

                                Wenn man dann noch Übersetzer wie etwa HipHop verwendet und aus PHP dann C++ macht, wirds letztlich ganz verwirrend ;)

                                1. Mahlzeit suit,

                                  Klar darfst du fragen ;-) Ich bin im Januar 1982 geboren.

                                  Da bin ich mit Februar 82 ja noch ein junger Hüpfer :p

                                  Jungspunde, allesamt ...

                                  MfG,
                                  EKKi

                                  --
                                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                                  1. [latex]Mae  govannen![/latex]

                                    Klar darfst du fragen ;-) Ich bin im Januar 1982 geboren.

                                    Da bin ich mit Februar 82 ja noch ein junger Hüpfer :p

                                    Jungspunde, allesamt ...

                                    Der Kindergarten scheint einen Ausflug zu machen ;)

                                    Stur lächeln und winken, Männer!
                                    Kai

                                    --
                                    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
                                    in Richtung "Mess up the Web".(suit)
                                    SelfHTML-Forum-Stylesheet
                                    1. Hallo,

                                      Klar darfst du fragen ;-) Ich bin im Januar 1982 geboren.
                                      Da bin ich mit Februar 82 ja noch ein junger Hüpfer :p
                                      Jungspunde, allesamt ...
                                      Der Kindergarten scheint einen Ausflug zu machen ;)

                                      nu seid doch vernünftig und ärgert nicht immer die kleinen Jungs! :-)

                                      Ciao,
                                       Martin

                                      --
                                      Eifersucht ist so alt wie die Menschheit: Als Adam einmal spät heimkam, zählte Eva sofort seine Rippen.
                                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                      1. Klar darfst du fragen ;-) Ich bin im Januar 1982 geboren.
                                        Da bin ich mit Februar 82 ja noch ein junger Hüpfer :p
                                        Jungspunde, allesamt ...
                                        Der Kindergarten scheint einen Ausflug zu machen ;)

                                        nu seid doch vernünftig und ärgert nicht immer die kleinen Jungs! :-)

                                        Hat das Altersheim heute Wandertag? :p