Ahhhhrghhhhh - Button mit zwei versch. Funktionen

Guten Morgen liebe Gemeinde,

ich hab ein Fomular gebastelt was mir Daten in eine send.php schickt.
Dort soll der Formularausfüller die Daten nochmal überprüfen und senden bzw. korrigieren.l

Dazu habe ich zwei Buttons - einen „Daten korrigieren“ und einen „Absenden“

Wie stelle ich es nun an das er mit je nachdem welchen ich drücke die gewünschte Aktion macht?

Wenn ich oben auf der Seite ja

habe so führt er ja bei beiden Buttons die gleiche Aktion aus.

Wie stelle ich das an? Über ne IF-Abfrage?
Wie bekomme ich es dann aber hin das er mit auf die Seiten geht?

Gruß Rolf

hi
meines wissens ist es nicht möglich, dein problem rein mit html zu lösen. wenn die unterscheidung wirklich nur durch das drücken eines anderen buttons differenziert werden soll, dann würde ich das problem mit javascript lösen.
gruss niemand

Jacascript hätt ich gerne vermieden…:frowning:

PHP wäre halt ne Option…aber wenns nicht geht, dann nehm ich halt Javascript…:smile:

Hättest du dazu ne Lösung?

Gruß Rolf

Moin!

Leider gibt es nur unschöne Lösungen für dieses Problem:

a) JavaScript zur Abänderung der Ziel-Adresse (läuft dann aber nur auf Clients mit JavaScript aktiviert - ergo die schlechteste Lösung)
b) Ein zweites Formular, eines mit dem Button fürs Absenden, eines mit dem Button für die Korrektur, allerdings ist das auch nicht die schönste Variante oder eben
c) Man unterscheidet in PHP.

Für letzteren Punkt könnte man folgenden Code verwenden:

if (isset ($\_POST['Name\_des\_Buttons\_fuer\_Aktion\_2']) === TRUE)
{
 header ('Location: aktion2.php');
 exit;
}

Grund: Es wird beim Abschicken des Formulars nur der Array-Key des Submit-Buttons erzeugt, der auch geklickt wurde. Wenn du also mehrere Submit-Buttons hast, kannst du die Unterscheidung wie oben über den Namen treffen. Haben alle Button den selben Namen, müsstest du nach dem Inhalt im Array schauen, da dann der Value-Wert des geklickten Buttons dort enthalten ist.

Ich hoffe, dass dir das hilft.

MfG
Lutz

Für letzteren Punkt könnte man folgenden Code verwenden:

if (isset ($_POST[‚Name_des_Buttons_fuer_Aktion_2‘]) === TRUE)
{
header (‚Location: aktion2.php‘);
exit;
}

HeHe, last but not least :smile:
Sehr fein!
Funktioniert!

Danke dir!

Gruß Rolf

Tach!

Leider gibt es nur unschöne Lösungen für dieses Problem:
c) Man unterscheidet in PHP.

Warum ist das eine unschöne Lösung?

Grüße,
-Efchen

Weil man nicht eine Anfrage an z.B. mail.php stellt, wenn man stattdessen die edit.php haben will, das ist unsinnig, aber HTML-Formulare bieten von Hause aus leider keine derartige Unterscheidungsmöglichkeit.

Streitet euch ned:wink:
Habs doch gelöst menno :smile:)

Gruß Rolf

Das sollte kein Streit werden, sondern leiglich ein Hinweis, weshalb ich das für eine unschöne Lösung halte.

@Efchen: Im Übrigen würde ich das gerne auf deine Ausführungen im Bereich HTML reflektieren, bei der du ja gerne auf die unsinnigkeit mancher HTML-Elemente verweist, die manche Leute für ihre Zwecke „missbrauchen“ - nicht viel anders wäre es in dem von mir beschrieben Beispiel mit mail.php und edit.php, stimmst du mir da zu?

Weil man nicht eine Anfrage an z.B. mail.php stellt, wenn man
stattdessen die edit.php haben will, das ist unsinnig, aber
HTML-Formulare bieten von Hause aus leider keine derartige
Unterscheidungsmöglichkeit.

Ja, okay, das verstehe ich. Und auch Dein Vergleich zu HTML ist okay.

Wobei ich in so einem Fall ohnehin meistens alles in ein einziges Script schreibe und dann habe ich so eine Situation nicht mehr. Dann ists insgesamt aber auch nicht mehr unschön.

@rolf: Es streitet sich niemand. Er sagte, die Lösung ist unschön und ich wollte wissen, wieso. Ich finde es wichtig, dass man in Threads alle Seiten beleuchtet und einen Thread, in dem noch was unklar ist, nicht einfach beendet mit „ich habs hingekriegt“, was sich meistens auch anhört wie „auch wenn ich nicht weiß, wieso“, und das ist für mich persönlich unbefriedigend :wink:

Liebe Grüße und danke,
-Efchen

War ja auch nur Spass,

also ich habs hinbekommen mit -->

<?php if (isset ($_POST['absenden1']) === TRUE)<br />{
 header ('Location: bitte.html');
 exit;
}

if (isset ($\_POST['absenden2']) === TRUE)
{
 header ('Location: danke.html'); 
 exit;
}
?\>

Man muss nur aufpassen, das das alles GANZ oben auf der Seite steht :wink:

Aber ansonsten --> kinderleicht.

Ich hatte davor sowas ähnliches

if $\_POST['absenden1']) 
{ 
 .....
}

Also meine Gedanken waren nicht wirklich verkehrt nur eben grundlegend falsch :smile:)

Aber das klappt nun.
Wo ich momentan nun dran bin is die Variablen wenn korrigieren wieder in dem Form drin sind.

Aber da tüftle ich erstmal alleine rum (Ihr könnt euch ja schon mal Gedanken machen :smile:) ) und wenn ichs nicht schaffen sollte, tät ich mich melden :smile:

Gruß Rolf

Klar, so geht das auch und ist dann auch „mehr schön“ :wink:

Nichtsdestotrotz wünschte ich mir verschiedene Actions in einem Formular abhängig vom Button, das wäre die ultimative Lösung :smile:

Wenn cih das bei HTML 5 richtig gesehen habe, gibt es das ab da an in Forms, dass abweichend von der FORM-Action weitere Actions in den Submit-Button angegeben werden können!? Das wäre dann ja das, was ich meinte :smile:

MfG
Lutz