# Zwei Submit-Buttons  - Verschiedene Targets



## HeinerK (7. Januar 2005)

HTML bietet ja leider nicht die Möglichkeit direkt zwei verschiedene Submitbuttons in einer Form einzubauen, die dann zwei verschiedene Skripte starten.

Nun gibt es ja diesen Workaround zwei Submit-Buttons einzubauen, diesen Namen zu geben und das selbe Skript aufrufen zu lassen. Im Skript lässt sich dann überpruefen, welcher Button aufgerufen wurde und man kann entsprechenden Code ausführen.

Ich möchte aber bei dem Klick auf Button1, dass ein Iframe aktualisiert wird.
Bei Klick auf Button2 soll es komplett ein zu einem anderen Skript weitergehen.
Damit dass Iframe aktualisiert werden kann, muss ich ja leider in <form> ein target setzen.
Obenbeschriebener Workaround geht also leider aufgrund der unterschiedlichen targets nicht.

Fällt jemand eine Lösung ein?
Heiner


```
<form name="formname" target="preis" action="preis_berechnen.php" method="post">
<select size="1" name="A">
<option selected>A</option>
<option>1</option>
<option>2</option>
</select> 
<input type="submit" value="Preis berechnen">
<input type="submit" value="Fortfahren">
</form>
<iframe width="20%" height="50" name="preis">
```


----------



## Timbonet (7. Januar 2005)

Das kannst du per JavaScript realisieren.


----------



## HeinerK (7. Januar 2005)

Ups, hätte ich vielleicht schreiben sollen. Javascript will ich nicht, das ist Dreck.

Etwa 10-15 % der Besucher haben kein Javascript aktiviert, weil sie es versehentlich (Doofheit) oder bewußt (Sicherheitsdenken) abgeschaltet haben.

Da da Skript im Kernbereich der Seite ist, würde ich ungern auf 10-15% der Besucher/Kunden verzichten...

Heiner


----------



## Timbonet (7. Januar 2005)

Mit PHP gibt es da keine Möglichkeit, als das Formular an ein weiteres Skript zur Auswertung zu schicken.


----------



## ptolein (7. Januar 2005)

Ich hatte das Problem auch mal und habe es mit einem Link und einem Button gelöst.

 Du nimmst für "Preis berechnen" einen Link  (z.B. auch  mit Variablenübergabe) und für "Fortfahren" die normale Formularfom mit Submit. 

 Wäre das in Deinem Fall auch ok?


----------



## HeinerK (7. Januar 2005)

zu Link und Button:

Nein, das geht leider nicht. Da ich für beide Folgeschritt ja die Daten aus dem Formular brauche.

Heiner


----------



## ptolein (7. Januar 2005)

Wenn es nicht allzu viele Felder sind,  könnte man es vielleicht mit serialize() bzw. unserialize() probieren?


----------



## HeinerK (8. Januar 2005)

Aehm, ja...?!

Kannst du die Idee noch ein wenig mit Worten schmücken? ;-)

Heiner


----------



## mnbvcxy (8. Januar 2005)

Müssen es denn unbedingt 2 verschieden Buttons sein?
Könntest du nicht einen Auswahl-(radio)-Button machen und dann im nachfolgenden Skript einfach unterscheiden, welche Wahl der User getroffen hat?

Also von wegen 
Möchten Sie dies oder jenes?
Radio-Buttons: (x)    ( )

   [Absenden]


----------



## Timbonet (8. Januar 2005)

Das würde das Problem nicht verändern, da du dann eben nicht prüfen mußt, welcher Button gedrückt wurde, sondern den Zustand der Radiobuttons.


----------



## theCean (9. Januar 2005)

Öhm?

```
<input type="submit" name="berechnen" value="Preis berechnen">
<input type="submit" name="weiter" value="Weiter">


<?
if(isset($_POST[berechnen]))
  echo "Wird berechnet!";
elseif(isset($_POST[weiter]))
  echo "Weiter!";
?>
```
Sollte doch so gehen?!


----------



## Timbonet (9. Januar 2005)

Aber auch damit löst du sein Problem nicht, beim Klick auf den einen Button ein IFrame zu aktualisieren und beim Klick auf den anderen eine neue Seite aufzubauen.. Wie gesagt, das geht mit PHP auch nicht.


----------



## theCean (9. Januar 2005)

Von was redest du? 
Man kann in der action Datei doch einfach abfragen welcher der beiden Buttons gedrückt wurde, und dann einfach je nachdem den Berechneten Preis und die alte Form ausgeben, oder halt die Daten verarbeiten und etwas neues machen.Nochmal deutlicher:

```
//Datei: xyz.html
<form action="ziel.php" method="post">
<input type="text" size="2" name="x">+<input type="text" size="2" name="y"><br>
<input type="submit" name="berechnen" value="Berechnen"><br>
<input type="submit" name="mehr" value="Noch etwas dazu addieren">
</form>

//Datei: ziel.php
<?
if(isset($_POST[berechnen]))
{
  echo $_POST[x]+$_POST[y]+$_POST[z];
} elseif(isset($_POST[mehr])) {
  <?
  <form action="ziel.php" method="post">
  <input type="hidden" name="x" value="<? echo $_POST[x]; ?>">
  <input type="hidden" name="y" value="<? echo $_POST[y]; ?>">
  <? echo $_POST[x]+$_POST[y]; ?>+</nput type="text" size="2" name="z"><br>
  <input type="submit" name="berechnen" value="Berechnen"><br>
  </form>
  ?>
}
?>
```


----------



## Timbonet (9. Januar 2005)

Ich rede von seiner Problemstellung:


> Ich möchte aber bei dem Klick auf Button1, dass ein Iframe aktualisiert wird. Bei Klick auf Button2 soll es komplett ein zu einem anderen Skript weitergehen.


----------



## Sven Mintel (9. Januar 2005)

Dieses Problem ist, wie bereits mehrmals erwähnt, nicht mit PHP lösbar.
Ist das Formular einmal geladen, lässt sich seine "action" nur mit Javascript ändern... PHP hat zu diesem Zeitpunkt überhaupt nix mehr damit zu schaffen.


----------



## ptolein (10. Januar 2005)

Vielleicht nochmal zu den Funktionen serialize() und unserialze(). 
 Hier kannst Du Deine Werte unterbringen, "..., ohne dass diese ihren Wert oder ihre Struktur verlieren." Ich weiss zwar leider nicht, wie viele Feldwerte Du übergeben musst, aber wenn es nur "wenige" sind, kannst Du Sie auch mit serialize() über einen Link weitergeben. Allerdings hast Du dann wie bereits erwähnt nur einen Submit-Button und einen Link. Um das zu umgehen, kannst Du zum Beispiel eine Grafik verlinken, die wie Dein Button aussieht. 
  Besser und stilvoller ist es allerdings, wenn Du Deine Werte in eine SESSION übergibst.

 Ich hoffe, ich verärgere jetzt nicht die Leute vom Fach, aber wie gesagt, ich habe  das gleiche Problem damals auch mit einem Submit- Button und einer Grafik gelöst.  Ist zwar nicht toll, aber es funktioniert erstmal.


----------



## NicePF (10. Januar 2005)

Verschaltelte Forms?

<form name="form1">

<form name="form2">

[SUBMIT2]
</form>

[SUBMIT1]
</form>

Ich habe das noch nie probiert, würde das von der Logik her funktionieren?
Submit1 müsste doch dann "theoretisch" die werte des innenliegenden Formulars mitbenutzen können?!

Gruß Nick


----------



## ptolein (10. Januar 2005)

> Verschaltelte Forms?


  Funktioniert leider nur von der logischen Seite....

  Das Endtag  </form> schließt beide Anwendungen.  Habe auch schon daran gedacht, aber so geht es leider nicht.


----------

