Dirk Paschel: Ein Formular - zwei Aktionen

Hallo!

Ich habe ein Formular und möchte dem Nutzer die Möglichkeit geben, sich die Eingabe anzuschauen oder abzusenden.

Folgender Beispiel-Code funktioniert nicht:

<?
echo $stat."<br>";
echo $Datum."<br>";
echo $Text."<br>";
$KndDatum= date ("Y-m-d H:i:s");
?>

<form name="bewertung" action="test.php?stat=1" method="post">";
<form name="bewertung2" action="test.php?stat=2" method="post">";

<input name="Text" type="text" size="30" value="<? echo $Text; ?>">
<input type="hidden" name="Datum" value="<? echo $Datum; ?>">

<input type="submit" value="Absenden2" name="submit"></form>
<input type="submit" value="Absenden1" name="submit"></form>

Wie realisiert man sowas?

Danke

  1. Hallo Dirk,

    du kannst nicht mehrere Formularfelder ineinanderschachteln.

    Du könntest aber mit JavaScript onClick eines von mehreren Submitbuttons ein und desselben Formulars das Action-Attribut des betreffenden Formulars noch schnell ändern, bevor es abgeschickt wird.

    Gruß Gernot

    1. Lieber Gernot,

      mit JavaScript onClick [...] das Action-Attribut des betreffenden Formulars noch schnell ändern, bevor es abgeschickt wird.

      aha... und wenn der Benutzer keines verfügbar hat? Ist das nicht ein Fall, wie "keine lebenswichtigen Funktionalitäten wie z.B. Navigation von abstellbaren Dingen wie Flash, Javascript und dergleichen abhängig machen"?

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

  2. Lieber Dirk,

    dass man <form>-Elemente nicht ineinander verschachteln kann, das hat Dir Gernot schon geschrieben. Meine Lösung in solchen Fällen verwendet verschiedene Submit-Buttons.

    <form action="test.php" method="post">  
        <input type="text" name="Text" value="<?php echo $text; ?>" />  
        <input type="hidden" name="Datum" value="<? echo $Datum; ?>" />  
      
        <input type="submit" name="vorschau_button" value="Vorschau" />  
        <input type="submit" name="absenden_button" value="Absenden" />  
    </form>
    

    Das PHP-Script prüft dann zuerst, welcher der Submit-Buttons gedrückt wurde.

    $meine_aktion = 'zeige_formular';  
      
    if (isset($_GET['vorschau_button']) && $_GET['vorschau_button'] != '')  
        $meine_aktion = "vorschau";  
      
    if (isset($_GET['absenden_button']) && $_GET['absenden_button'] != '')  
        $meine_aktion = "annehmen";  
      
    switch ($meine_aktion) {  
        case 'vorschau':  
           zeige_vorschau();  
        break;  
      
        case 'annehmen':  
           daten_annehmen();  
        break;  
      
        default:  
           echo "Sie haben wohl nur die [Return]-Taste betätigt?!";  
           zeige_formular();  
    }
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Super!

      Läuft!

      Danke!