Mehrere Submit-Buttons
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
button
code
dank
dokument
ermitteln
form
frage
funktion
gleiche beschriftungen
header
knopf
machen
post
rufen
studieren
text
textzeile
type
unterschiedliche namen
zweiter button
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Jeder Button bekommt ein eigenes Form-Element, mit eigenem Namen und eigener action. Erklärt?
[edit] Mir fällt gerade auf, das das möglicherweise nicht erklärt ist, wenn die Textzeile zum gleichen Form wie alle buttons gehört... in dem Fall tippe ich auf darauf, dass die Buttons keine Submit-Buttons sind, sondern ganz normale Buttons. Diese rufen jeweils eine eigene Javascript-Funktion auf, die die Form-action auf unterschiedliche Werte setzt und dann abschickt.
Eine Alternative wäre, dass in Wahrheit alle Buttons normale Submit-Buttons sind und aufs gleiche Dokument zeigen. Dieses PHP-Dokument ermittelt dann über die POST-Variablen, welcher Button gedrückt wurde (ist leicht) und leitet dann weiter, je nachdem, welcher gedrückt wurde, zu verschiedenen Dokumenten.
Beitrag geändert: 13.7.2008 20:42:41 von merovius -
Nun, deine Submitbuttons haben einen Namen, z.B. \"submit\". Du gibst also jedem den gleichen Namen und jedem einen anderen Text (macht irgendwie sinn, mit nem anderen Text, denn sonst könnte man die als user nicht unterscheiden). Im PHP-Script dann einfach:
$gedrückterknopf = $_POST[\'submit\'];
Alternativ könntest du auch jedem Button unterschiedliche Namen geben (wenn du gleiche Beschriftungen brauchst) und dann eine Abfrage machten wie:
if(isset($_POST[\'button1\'])) { header(\'Location: php1.php\'); } elseif(isset($_POST[\'button2\'])) { header(\'Location: php2.php\'); } ...
Würd ich aber nur machen, wenn du gleiche Beschriftungen brauchst.
Ist übrigens nur ne Vermutung, dass das erste funktioniert, vielleicht tut es das nicht, aber glaube ich nicht. Probieren geht über studieren.
Eine letzte Alternative, falls das erste nicht geht, ist ungefähr so:
Du macht in der Form ein so genanntes \"hidden field\". Die Buttons rufen dann wie in der anderen Lösung jeweils eine Javascript-Funktion auf, die den Wert vom hiddenfield ändert und dann das Formular absendet. Bin leider im DOM nicht fit genug, um fertigen Code zu produzieren, aber hoffe du verstehst, was die Idee dahinter ist.
Du kannst das hiddenfield dann einfach \"gedrueckterknopp\" nennen und dann im PHP-Skript wie gewohnt den Wert über $_POST[\'gedrueckterknopp\'] ermitteln. -
kann ich auch so machen: type=\"submit\" name=\"button1\" und so?
-
ja so machst du das und dann liest das PHP-Script oder was immer du verwendest aus, welcher knopf gedrückt wurde.
<?php if(isset($_POST[button1])) { echo \"Button1\"; } elseif(isset($_POST[button2])) { echo \"Button2\"; }elseif(isset($_POST[button3])) { echo \"Button3\"; } ?>
edit: Die Syntaxhervorhebung klaptt irgendwie nicht, nicht irritieren lassen
Beitrag geändert: 14.7.2008 16:22:14 von brianum -
kann ich auch so machen: type=\"submit\" name=\"button1\" und so?
Ja, aber nur, wenn du das so machst, wie brianum das gesagt hat.
Das Ding ist, dass von dem Button, der als Dubmit gedrückt wird, eine Post-Variable übertragen wird, die den Namen vom Button hat, und den Wert der Beschriftung. Wenn du also zwei Buttons
type=\"submit\" name=\"button1\" value=\"button1\"
type=\"submit\" name=\"button2\" value=\"button2\"
Hast, wird beim Klick auf den ersten eine Post-Variable
button1=button1
übergeben und beim Klick auf den zweiten
button2=button2
Hast du hingegen solche zwei Buttons:
type=\"submit\" name=\"submit\" value=\"button1\"
type=\"submit\" name=\"submit\" value=\"button2\"
Dann wird beim Klick auf den ersten Button
submit=button1
und beim Klick auf den zweiten Button
submit=Button2
übertragen. Zumindest bin ich mir da verhältnismäßig sicher. Beide Methoden müssen unterschiedlich behandelt werden, Es ist möglich, dass die erste nicht geht (Weil möglicherweise die Daten von ALLEN Buttons übertragen werden, obwohl du nur einen geklickt hast) und möglicherweise funktioniert das zweite nicht und möglicherweise keines von beiden (dann müsste man das über Javascript lösen). Mein Ansatz wäre für dich, das zweite auszuprobieren, also buttons wie oben dargestellt zu machen und ins PHP-Dok zu schreiben
<?php if($_POST[\'submit\'] == \'button1\') { echo \'erster Button gedrückt!\'; } elseif($_POST[\'submit\'] == \'button2\') { echo \'zweiter Button gedrückt!\'; } ?>
Und das dann mal auszuprobieren mit verschiedenen BRowsern. Wenn das nicht geht, die andere Möglichkeit ausprobieren.
Beitrag geändert: 14.7.2008 17:12:52 von merovius -
Danke! Ich habe allerdings noch eine Frage: Warum verwendet ihr immer elseif, ich verwende nur else. Ist das egal?
-
Danke! Ich habe allerdings noch eine Frage: Warum verwendet ihr immer elseif, ich verwende nur else. Ist das egal?
Es ist egal, wenn du ur zwei Möglichkeiten hast. Wenn du z.B. drei Buttons hättest, müsstest du machen
<?php if($_POST[\'submit\'] == \'button1\') { echo \'erster Button gedrückt!\'; } elseif($_POST[\'submit\'] == \'button2\') { echo \'zweiter Button gedrückt!\'; } elseif($_POST[\'submit\'] == \'button3\') { echo \'dritter Button gedrückt!\'; } ?>
Ausserdem ist, wenn du es über else machst, auch, wenn ein Knopf gedrückt wurde, der nicht existiert (normalerweise Zeichen für nen Hack), dann ist es so, als wäre der letzte Knopf gedrückt wurde. Arbeitest du nur über elseif, dann passiert in sonem Fall einfach nichts.
Also, ich hoffe du weisst, was elseif überhaupt ist?
Also if(A)..else bedeutet \"Wenn A zutrifft, dann mach, was nach if steht und wenn nicht, dann mach, was unter else steht\". if(A)...elseif(A) bedeutet \"Wenn A zutrifft, dann mach, was nach if steht, und wenn A nicht zutrifft, aber B, dann mach, was unter elseif steht\". Und wenn du if(A)..elseif(B)..else machst, wird, wenn weder A noch B zutrifft das unter else ausgeführt.... ein bisschen komisch erklärt, vielleicht einfach mal googeln nach elseif
Beitrag geändert: 14.7.2008 19:47:58 von merovius -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage