[PHP] Mehre Submit Buttons
-
Hallo,
ich lese aus einer Datenbank und stelle die Einträge dann in Tabellenform auf meiner Seite da. Nun möchte ich für jeden Eintrag einen eigenen "Bearbeiten"-Button haben, jedoch ergibt sich das Problem, dass ich nicht weiß wie ich das machen soll, denn sie haben ja alle den gleichen Namen und wie soll ich das Abfragen...? Ich brauche ja sowas in der Art: edit.entry.php?id=1Ich möchte aber keinen Link nehmen
Also was tun?
<form method="pos" action="edit.entry.php?id=<?php echo (row[$id]); ?>"> <inpu.... </form>
Das kanns doch auch nicht sein
Viele Grüße
ProblemFall
-
Jedem Button nen Namen geben (<input type="submit" name="foo"/>) und serverseitig gucken, ob "foo" gesetzt ist.
-
Eintrag 1 <input type="submit" name="foo"/> Eintrag 2 <input type="submit" name="foo"/> Eintrag 3 <input type="submit" name="foo"/> Eintrag 4 <input type="submit" name="foo"/> Eintrag 5 <input type="submit" name="foo"/>
Hä? Wie soll ich nun unterscheiden?
-
Mitdenken oder googlen
-
Ihr versteht mein Problem nur nicht. Die Buttons werden Dymanisch angelegt......
Wie soll ich sie nun verarbeiten? Ich möchte nicht das der Button einen anderen Namen bekommt sondern das sie gleich sind! Und ich möchte trotzdem wissen zu welchem Eintrag er gehört...
Wer lesen kann ist klar im Vorteil
-
Es gibt verschiedene Möglichkeiten, in PHP zu unterscheiden, welcher Submit-Button in einem HTML-Formular betätigt wurde:
Haben die Buttons den gleichen Namen (name="submit"), kann man den value (gleichzeitig Beschriftungstext des Buttons) auswerten; die PHP-Variable heißt so wie der Button ($_REQUEST['submit']).
Haben die Buttons unterschiedliche Namen, erhält man je nach betätigtem Button eine Variable mit anderem Namen registriert; mit isset() kann man prüfen, ob eine bestimmte Variable vorhanden ist, d.h. ob ein bestimmter Button angeklickt wurde.
Benennt man die Buttons in der Array-Schreibweise (name="submit[0]", zwischen den eckigen Klammern müssen eindeutige Werte stehen), erhält man in PHP ein Array mit genau einem Element; der Schlüssel (Key) dieses Elementes ist der aktivierte Button.
-
ProblemFall schrieb:
Ihr versteht mein Problem nur nicht. Die Buttons werden Dymanisch angelegt......
Wie soll ich sie nun verarbeiten? Ich möchte nicht das der Button einen anderen Namen bekommt sondern das sie gleich sind! Und ich möchte trotzdem wissen zu welchem Eintrag er gehört...
Wer lesen kann ist klar im Vorteil
Du vestehst blos nicht was er gemeint hat:
Eintrag 1 <input type="submit" name="editID1"/> Eintrag 2 <input type="submit" name="editID2"/> Eintrag 3 <input type="submit" name="editID3"/> Eintrag 4 <input type="submit" name="editID4"/> Eintrag 5 <input type="submit" name="editID5"/>
Das kann man auch dynamisch generieren!
$ID=0; for($i=1;$i<=$numentrys;$++) { if(isset($_POST["editID".$i])) { $ID = $i; break; } } if(!$ID) echo "Du bist auf dieser Seite falsch";
*ungetestet*
Das Script setzt voraus das deine erste ID 1 ist und nicht 0. In der vari $ID hast du dann die ID stehen die er ausgewählt hat.
mfg tobZel
-
Du könntest auch einfach eine Liste mit radiobuttons benutzen
-
Oder vielleicht als Array
<input type="submit" name="button[]" value="Bearbeiten" /> <input type="submit" name="button[]" value="Bearbeiten" />
man könnte dann eventuell nach dem aktuelle Array-Schlüssel fragen
key($_POST[button])
Oder vielleicht ein Ansatz über das Button Element
<button type="submit" name="button" value="1">Bearbeiten</button> <button type="submit" name="button" value="2">Bearbeiten</button>
aber keine Ahnung ob man das tatsächlich so machen kann/sollte. Zudem hat der IE Probleme mit mehreren Button-Elementen vom Typ "submit" im selben Formular.
-
Hallo,
Leute, der Fred ist 9 Monate alt ...
MORL schrieb:
Zudem hat der IE Probleme mit mehreren Button-Elementen vom Typ "submit" im selben Formular.
Könntest du das näher erläutern? Ich habe niemals irgendwelche Probleme festgestellt, nicht beim 6er und nicht beim 7er!
In Foren ist es z.B. gängige Praxis, auf die von Headhunter (vor 9 Monaten ...) beschriebene Art und Weise die submit-buttons "Eintragen" und "Vorschau" zu unterscheiden. Das phpBB etwa nutzt diese Technik meines Wissens schon seit über einem zweidrittel Jahrzehnts.
-
Leute, der Fred ist 9 Monate alt ...
Wie krass. Ist mir garnicht aufgefallen :-D. Sollte der Fred nich lieber Thread heissen?
Könntest du das näher erläutern?
Klar kann ich das und schon gehts los.
Hier ein Beispiel eines Formulares wie man es sich vorstellen könnte.<form method="post" action="receiving_script"> <fieldset> <div> What would you do next? </div> <div> <button type="submit" name="decision1">Way 1</button> | <button type="submit" name="decision2">Way 2</button> </div> </fieldset> </form>
Normalerweise würde man jetzt erwarten, das das empfangende Skript ein Abfrage der Folgenden Art machen könnte:
if (isset($_POST['decision1'])) { print 'Way 1 chosen'; } elseif (isset($_POST['decision2'])) { print 'Way 2 chosen'; }
Und hier das Problem im IE:
Einer der beiden Werte wird nie vom IE gesendet auch wenn explizit auf den Button geklickt wurde. Ich wollte es auch nicht glauben aber es ist tatsächlich so.
Jetzt könnte man natürlich die button-Elemente durch input-Elemente ersetzen was aber ein "stylen" der Buttons im vollen Maße nicht möglich macht.
Eine Lösung für das oben aufgeführte Formular wäre, jedes button-Element in ein einzelnes form-Element zu packen was bei so einfachen Formularen noch möglich ist.
Und nun viel Spass beim ausprobieren :).PS: Ich glaube der IE 7 hat mitterweile gelernt damit umzugehen, ganz sicher bin ich mir da aber grad nicht.
-
MORL schrieb:
Fred nich lieber Thread heissen?
Irony Memorial
MORL schrieb:
Und hier das Problem im IE:
Einer der beiden Werte wird nie vom IE gesendet auch wenn explizit auf den Button geklickt wurde. Ich wollte es auch nicht glauben aber es ist tatsächlich so.Okay, ich bekenne mich schuldig
Ich habe deinen Post zu schnell gelesen und hatte<input type="submit" />
im HinterkopfAber trotzdem Danke für die super Erklärung! Wenn jemand per Suchfunktion auf den Thread stößt, wird sie ihm sicher lehrreich sein
-
Du könntest zusätzlich ein hidden button verwenden, dessen value die position verrät