mehrere submits klappt nicht
tufan
- html
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.
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
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
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
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.
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©
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
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©
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
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©
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.
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©
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.
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