kostenloser Webspace werbefrei: lima-city


Mehrere Submit-Buttons

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    my-selfmade

    Kostenloser Webspace von my-selfmade, auf Homepage erstellen warten

    my-selfmade hat kostenlosen Webspace.

    Ich habe schon öfter im I-Net gesehen, dass eine Texteingabezeile auf der Seite war, und dann mehrere Buttons. Jeder hat die Textzeile zu einem anderem Dokument geschickt. Wie geht das?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m******s

    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
  4. Autor dieses Themas

    my-selfmade

    Kostenloser Webspace von my-selfmade, auf Homepage erstellen warten

    my-selfmade hat kostenlosen Webspace.

    Achso, danke. Aber wie kann ich ermitteln, welcher Button gedrückt wurde?
  5. m******s

    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.
  6. Autor dieses Themas

    my-selfmade

    Kostenloser Webspace von my-selfmade, auf Homepage erstellen warten

    my-selfmade hat kostenlosen Webspace.

    kann ich auch so machen: type=\"submit\" name=\"button1\" und so?
  7. b*****m

    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
  8. m******s


    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
  9. Autor dieses Themas

    my-selfmade

    Kostenloser Webspace von my-selfmade, auf Homepage erstellen warten

    my-selfmade hat kostenlosen Webspace.

    Danke! Ich habe allerdings noch eine Frage: Warum verwendet ihr immer elseif, ich verwende nur else. Ist das egal?
  10. m******s


    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
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!