tufan: mehrere submits klappt nicht

hallo..

ich möchte auf einer Seite für ein Formular mehrere Submit-Buttons festlegen; Löschen, Freischalten usw. Die Formulardaten werden per Post übertragen und mittels einem PHP-Skript überprüft.

im Archiv habe ich von Johannes Zeller folgenden Lösungsvorschlag gefunden:

»»Was du aber machen kannst, ist den Submit-Buttons mit dem name-Attribut unterschiedliche Namen zuzuweisen und dann in dem Zielscript überprüfen, welcher davon in dem Query-String vorhanden ist; das ist dann der, der zum abschicken verwendet wurde.

das habe ich versucht zu realisieren, jedoch im POST-Array tauchen die Namen meiner Buttons nicht auf (überprüft mit var_dump() ), so dass ich nicht unterscheiden kann mit welchem Button das Formular abgeschickt wurde.

Mein Code:

<form name="checkboxform" method="POST" action="handler.messages.php">
<!-- submit buttons -->
<input type="button" class="input" id="del" name="del" value="Markierte Löschen" onclick="document.checkboxform.submit();">
<input type="button" class="input" name="publish" id="publish" value="Markierte Freischalten" onclick="document.checkboxform.submit();">

<!-- beispielcheckbox; wobei die werte der Checkboxen werden ohne Probleme angezeigt -->
<input type="checkbox" value="7367"  id="73670" name="73670">

vielen Dank für Lösungsvorschläge im Voraus.

tufi.

  1. Hello,

    <form name="checkboxform" method="POST" action="handler.messages.php">
    <!-- submit buttons -->
    <input type="button" class="input" id="del" name="del" value="Markierte Löschen" onclick="document.checkboxform.submit();">
    <input type="button" class="input" name="publish" id="publish" value="Markierte Freischalten" onclick="document.checkboxform.submit();">

    Das sind auch keine Submit-Buttons. Warum JavaScript? Ist das irgendwie zwingend erforderlich?

    <input type="submit" name="btn['del']" value="Delete">
      <input type="submit" name="btn['ins']" value="speichern">
      <input type="submit" name="btn['search']" value="Search">

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ich bekenne: Ich gehöre zu den Induktivitäten dieser Welt!
    1. hi,

      Das sind auch keine Submit-Buttons. Warum JavaScript? Ist das irgendwie zwingend erforderlich?

      nein, zwingend erforderlich ist es nicht. ich werde Deinen Vorschlag gleich ausprobieren.

      danke.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      grüsse aus Berlin,

      tufi

    2. Hello,

      Hello,

      Das sind auch keine Submit-Buttons. Warum JavaScript? Ist das irgendwie zwingend erforderlich?

      <input type="submit" name="btn['del']" value="Delete">
        <input type="submit" name="btn['ins']" value="speichern">
        <input type="submit" name="btn['search']" value="Search">

      ^      ^
      Die Häkchen müssen natürlich wegbleiben im HTML. Da habe ich mal wieder zu schnell geclickt

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ich bekenne: Ich gehöre zu den Induktivitäten dieser Welt!
      1. hallo..

        Die Häkchen müssen natürlich wegbleiben im HTML. Da habe ich mal wieder zu schnell geclickt

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        :) danke, hatte die Namen etwas anders vergeben. aufjedenfall jetzt klappts.

        danke nochmal..

        tufi.

  2. Moin tufan,

    <form name="checkboxform" method="POST" action="handler.messages.php">
    <!-- submit buttons -->
    <input type="button" class="input" id="del" name="del" value="Markierte Löschen" onclick="document.checkboxform.submit();">
    <input type="button" class="input" name="publish" id="publish" value="Markierte Freischalten" onclick="document.checkboxform.submit

    ();">

    Was nu? Du hast IMHO JS und PHP wild gemischt. Also PHP oder JS

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Moin tufan,

      hallo Mike,

      Was nu? Du hast IMHO JS und PHP wild gemischt. Also PHP oder JS

      inwiefern wild ? (ich habe bloss zum für Submit JS eingesetzt, was wie Tom schon auch sagte auch nicht zwingend erforderlich ist. )

      regds
      Mike©

      grüsse,

      tufi

      1. Moin tufan,

        inwiefern wild ? (ich habe bloss zum für Submit JS eingesetzt, was wie Tom schon auch sagte auch nicht zwingend erforderlich ist. )

        deswegen wild weil Du JS und PHP unötiger Weise gemischt hast.
        Der Button wird anhand seines Namens indentifiziert:

        <input type="submit" name="Change" value="Ändern">
        <input type="submit" name="Delete" value="Löschen">

        Auswerten der Buttons mit:

        if ( isset ($_POST['Change']) )
           {
              ... mache das
           }
        if ( isset ($_POST['Delete']) )
           {
              ... mache dies
           }

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. hallo..

          Moin tufan,

          inwiefern wild ? (ich habe bloss zum für Submit JS eingesetzt, was wie Tom schon auch sagte auch nicht zwingend erforderlich ist. )

          deswegen wild weil Du JS und PHP unötiger Weise gemischt hast.
          Der Button wird anhand seines Namens indentifiziert:

          hmm.. okay. inzwischen habe ich den JS rausgeschmissen. und der Code in meinem PHP-Skript sah/sieht fast genauso wie in Deinem Beispiel.
          danke.

          regds
          Mike©

          grüsse,

          tufi

          1. Moin tufan,

            hmm.. okay. inzwischen habe ich den JS rausgeschmissen. und der Code in meinem PHP-Skript sah/sieht fast genauso wie in Deinem Beispiel.

            freut mich, wenn's denn passt :-))

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.
    2. hallo Mike© ,

      <form name="checkboxform" method="POST" action="handler.messages.php">
      <!-- submit buttons -->
      <input type="button" class="input" id="del" name="del" value="Markierte Löschen" onclick="document.checkboxform.submit();">
      <input type="button" class="input" name="publish" id="publish" value="Markierte Freischalten" onclick="document.checkboxform.submit ();">
      Was nu? Du hast IMHO JS und PHP wild gemischt. Also PHP oder JS

      Es ist meines Erachtens falsch, hier eine Alternative "PHP<->JS" aufzumachen. PHP ist es wurscht, welchen Code es erzeugen soll, es schreibt HTML genauso wie Javascript oder irgendwas andres.
      "Wild gemischt" trifft also nur auf das zu, was eventuell von PHP erzeugt werden soll, und da hast du zumindest teilweise recht, weil es für die Fragestellung nicht förderlich ist, einen EventHandler an den button zu binden. Weit eleganter und richtiger ist das, was Vinzenz in https://forum.selfhtml.org/?t=95317&m=577999 vorgeschlagen hat: man kann den buttons ja verschiedene Namen zuweisen, was zu verschiedenen Variablen führt, die dann das PHP-Script auswerten kann. Theoretisch können nahezu unendlich viele buttons mit unterschiedlichen Namen versehen werden und dadurch im selben Script unterschiedliche Reaktionsweisen je nach "if/else if/else" auslösen.

      Es ist also gar kein Javascript nötig  -  und in diesem Fall auch ein bißchen deplaziert. Aber es ist wichtig, sich über die Bedeutung von Formularnamen, Elementnamen und Ähnlichem Klarheit zu verschaffen und sie bewußt im aufgerufenen Script auszunutzen.

      Grüße aus Berlin

      Christoph S.

      1. Moin Christoph,

        Es ist meines Erachtens falsch, hier eine Alternative "PHP<->JS" aufzumachen. PHP ist es wurscht, welchen Code es erzeugen soll, es schreibt HTML genauso wie Javascript oder irgendwas andres.

        Yep, PHP erzeugt die Page.

        Es ist also gar kein Javascript nötig  -  und in diesem Fall auch ein bißchen deplaziert. Aber es ist wichtig, sich über die Bedeutung von Formularnamen, Elementnamen und Ähnlichem Klarheit zu verschaffen und sie bewußt im aufgerufenen Script auszunutzen.

        Ähm... Habe ich was anders behauptet?

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. hallo Mike© ,

          Yep, PHP erzeugt die Page.

          Es ist also gar kein Javascript nötig
          Ähm... Habe ich was anders behauptet?

          Ja. Du hast ausgesagt:

          Was nu? Du hast IMHO JS und PHP wild gemischt. Also PHP oder JS

          Das hättest du "etwas sauberer" trennen sollen. Diese Alternative, die du da benannt hast, existiert nur scheinbar.

          Grüße aus Berlin

          Christoph S.

  3. hi,

    Mein Code:

    <form name="checkboxform" method="POST" action="handler.messages.php">
    <!-- submit buttons -->
    <input type="button" class="input" id="del" name="del" value="Markierte Löschen" onclick="document.checkboxform.submit();">
    <input type="button" class="input" name="publish" id="publish" value="Markierte Freischalten" onclick="document.checkboxform.submit();">

    <!-- beispielcheckbox; wobei die werte der Checkboxen werden ohne Probleme angezeigt -->
    <input type="checkbox" value="7367"  id="73670" name="73670">

    hi,
    ich weiss jetzt nicht genau was es mit dem formular aufsich hat,aber nach meinen erfahrungen -> üblich ist perl und das formular in html zum abschicken.
    Ich glaube egal ob nun mit javascript oder sonstigen methoden geschrieben,wichtig ist dass:
    <form target="_blank" action="perl.cgi" method="POST">
    <input type="hidden" name="etwas" value="geschriebenes">
    <input type="submit" name="submit" value="abschicken">
    //vorher mit

    </form>

    abgeschlossen wird,bevor der nächste
    <form target="_blank" action="perlA.cgi" method="POST">
    folgt.
    so in etwa

    <form target="_blank" action="perlA.cgi" method="POST">
    <input type="hidden" name="etwas" value="FormularA">
    <input type="submit" name="submit" value="abschicken">
    </form>

    <form target="_blank" action="perlB.cgi" method="POST">
    <input type="hidden" name="etwas" value="FormularB">
    <input type="submit" name="submit" value="abschicken">
    </form>

    ...usw.
    Gruss
    Alain