Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] verschiedene Actions im gleichen html Formular?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] verschiedene Actions im gleichen html Formular?

    Hallo zusammen!

    Ich habe ein html-Formular mit mehreren Buttons.
    Nun möchte ich, dass beim Klick auf Button 1 eine andere Action ausgeführt wird, wie beim Klick auf Button 2!
    Beim Klick auf den ersten Button soll einfach nur ein Link aufgerufen werden.
    Beim Klick auf den zweiten Button soll das im <form> definierte php-skript aufgerufen werden.


    Mein Ansatz scheitert leider: Es wird immer nur die "action" im ersten form-Tag ausgeführt. Egal auf welchen Button ich klicke...
    Code:
     <form action="verarbeitendes_skript1.php" method="POST" name="daten">
    
    //verschiedene input-Felder...
    
             <form action="index.html" method="link">
             <input type="Submit" value="Link">
             </form>
        <input type="Submit" value="&Auml;nderungen &uuml;bernehmen">
        </form>


  • #2
    Man kann keine Forms verschachteln. Man kann ohne JS die Anforderung auch nicht lösen. Besser Du benutzt eine gemeinsame Action und wertest im Zielscript die Buttons getrennt aus.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      OK, danke für die Auskunft. Mit Javascript klappt es nun auch.

      Kommentar


      • #4
        ...und was machst Du mit den Leuten, die JavaScript im Browser deaktiviert haben?

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          Im konkreten Fall kann ich davon ausgehen, dass js aktiviert ist. dennoch eine berechtigte Frage: Wie würde man so etwas realisieren, wenn man nicht davon ausgehen kann, dass js aktiviert ist?

          Kommentar


          • #6
            Du kannst statt des zweiten Buttons einen normalen Link im Formular haben, welchen du mittels CSS zum Button umschmückst.
            PHP-Code:
            if ($var != 0) {
              
            $var 0;

            Kommentar


            • #7
              Ich würde auch empfehlen die Button Namen auszuwerten. So lief es bei mir bisher immer gut.

              Kommentar


              • #8
                Du kannst statt des zweiten Buttons einen normalen Link im Formular haben, welchen du mittels CSS zum Button umschmückst.
                Nicht sehr sinnvoll:
                //verschiedene input-Felder...

                dennoch eine berechtigte Frage: Wie würde man so etwas realisieren, wenn man nicht davon ausgehen kann, dass js aktiviert ist?
                Ich fänds ja gut, wenn Du Antworten auch lesen würdest und wenigstens versuchen, zu verstehen. Habe ich oben alles schon geschrieben.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Man könnte in dem Formular eine action einbauen, die auf ein php script verweist, in welchem dann der die Value des submit buttons ausgewertet wird, falls es Value1 ist, wird mit header("location: link_ziel.php"); auf die Seite, zu der verlinkt werden soll, gewechselt, falls es jedoch Value2 ist, wird das formular zum Beispiel ausgewertet, oder die Daten in eine Session gespeichert o.ä.

                  Noch sauberer wäre es, den namen der Buttons in einer Config.php festzulegen, etwa so:

                  config.php:
                  PHP-Code:
                  <?php
                  define
                  ('form1_value1','Link');
                  define('form1_value2','Abschicken');
                  ?>
                  form.php
                  PHP-Code:
                  <?php
                  if(isset($_POST['submt'])){
                  switch(
                  $_POST['submt']){
                  case 
                  'form1_value1'header('location: eine_seite.php'); 
                  break;
                  case 
                  'form1_value2': echo "Hey, ".$_POST['name'];//Zum Beispiel ..
                  break;
                  default: 
                  //ein fehler ...
                  }
                  }
                  else{
                  ?>
                  <form action="form.php" method="POST">
                  <input type="text" name="name" />
                  <input type="SUBMIT" name="submt" value="<?php echo form1_value1 ?>";/>
                  <input type="SUBMIT" name="submt" value="<?php echo form1_value2 ?>";/>

                  Kommentar


                  • #10
                    Zitat von Lalelu Beitrag anzeigen
                    Man könnte in dem Formular eine action einbauen, die auf ein php script verweist, in welchem dann der die Value des submit buttons ausgewertet wird, falls es Value1 ist, wird mit header("location: link_ziel.php"); auf die Seite, zu der verlinkt werden soll, gewechselt, falls es jedoch Value2 ist, wird das formular zum Beispiel ausgewertet, oder die Daten in eine Session gespeichert o.ä.

                    Noch sauberer wäre es, den namen der Buttons in einer Config.php festzulegen, etwa so:

                    config.php:
                    PHP-Code:
                    <?php
                    define
                    ('form1_value1','Link');
                    define('form1_value2','Abschicken');
                    ?>
                    form.php
                    PHP-Code:
                    <?php
                    if(isset($_POST['submt'])){
                    switch(
                    $_POST['submt']){
                    case 
                    'form1_value1'header('location: eine_seite.php'); 
                    break;
                    case 
                    'form1_value2': echo "Hey, ".$_POST['name'];//Zum Beispiel ..
                    break;
                    default: 
                    //ein fehler ...
                    }
                    }
                    else{
                    ?>
                    <form action="form.php" method="POST">
                    <input type="text" name="name" />
                    <input type="SUBMIT" name="submt" value="<?php echo form1_value1 ?>";/>
                    <input type="SUBMIT" name="submt" value="<?php echo form1_value2 ?>";/>
                    warum macht ihr euch das leben so schwer?
                    nikosch hats doch schon gesagt: auf eine seite mit action verweisen, dort aber auswerten, welcher button gedrückt wurde.

                    Kommentar


                    • #11
                      Und warum soll man ein komplettes Formular per POST übertragen, wenn man die Daten gar nicht haben will, um dann mit Header weiterzuhüpfen, wenn ein normales <a href ... > auch funktioniert? Warum der Link unbedingt wie ein Button aussehen soll ist auch nicht klar.
                      PHP-Code:
                      if ($var != 0) {
                        
                      $var 0;

                      Kommentar


                      • #12
                        Siehe oben, Wolla. „verschiedene input-Felder... “ sagt für mich aus, dass die in beiden Fällen gebraucht werden.

                        [edit]
                        Obwohl, gerade lese ich
                        Beim Klick auf den ersten Button soll einfach nur ein Link aufgerufen werden.
                        Vielleicht kann der TE doch mal auf den Vorschlag eingehen.
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar

                        Lädt...
                        X