Mehrere Forms -> Wie auswerten, welches angeklickt wurde?
Magenta
- php
Hi,
ich habe mehrere Forms auf einer Seite, dessen <input type="text"> Elemente alle den gleichen Namen haben. Zum Beispiel "test". Wie kann ich nun rausfinden WELCHES dieser Formulare angeklickt wurde, um zu wissen wie ich das "test" Element nun verarbeiten muss?
Es gibt ja eine Möglichkeit über $_REQUEST, jedoch wurde mir das von Freunden nicht wirklich empfohlen. Was gibt es noch für Altenativen?
Vielen Dank und einen schönen Mittag noch!
Hi!
ich habe mehrere Forms auf einer Seite, dessen <input type="text"> Elemente alle den gleichen Namen haben. Zum Beispiel "test". Wie kann ich nun rausfinden WELCHES dieser Formulare angeklickt wurde, um zu wissen wie ich das "test" Element nun verarbeiten muss?
Bei gleichem Ziel und bei gleichem Set an Elementen gar nicht. Bring einen Unterschied rein, und sei es ein Hidden-Element.
Lo!
Bei gleichem Ziel und bei gleichem Set an Elementen gar nicht. Bring einen Unterschied rein, und sei es ein Hidden-Element.
Hmm, ok. Und wie soll ich das nun machen, wenn Unterschiedie vorhanden sind? Unterschieden habe ich immer nur anhand von <input type="submit" name="FORM_1"> bzw. bei anderen Submit Buttons dann name="FORM_2". So sind doch Unterschiede gegeben, oder? Kann man dann nicht abfragen (Pseudo Code):
Wenn auf FORM_1 geklickt wurde, dann ...
Wenn auf FORM_1 geklickt wurde, dann ...
Sicher - und genau diese abfrage gestaltet man, indem man $_REQUEST auswertet, spezifischer aber $_POST oder $_GET.
Hallo,
Und wie soll ich das nun machen, wenn Unterschiedie vorhanden sind? Unterschieden habe ich immer nur anhand von <input type="submit" name="FORM_1"> bzw. bei anderen Submit Buttons dann name="FORM_2".
gut, ich hätte auch vorgeschlagen, den submit-Buttons unterschiedliche Namen zu geben.
Kann man dann nicht abfragen (Pseudo Code):
Wenn auf FORM_1 geklickt wurde, dann ...
Genau. Und ein submit-Button liefert genauso ein name/value-Pärchen in $_GET[] oder $_POST[] wie alle anderen Felder auch.
Einziges Problem: Wenn das Formular nicht durch Klicken auf den submit-Button abgeschickt wurde, sondern aus Bequemlichkeit durch Drücken der Enter-Taste, übermitteln manche Browser den submit-Button gar nicht.
Abhilfe: Ergänze ein hidden-Element im Formular mit dem gleichen Namen und dem gleichen value wie der submit-Button.
So long,
Martin
Mahlzeit Der Martin,
Abhilfe: Ergänze ein hidden-Element im Formular mit dem gleichen Namen und dem gleichen value wie der submit-Button.
Oder ein hidden-Element mit dem gleichen Namen wie das Formular ...
MfG,
EKKi
Hi!
Bei gleichem Ziel und bei gleichem Set an Elementen gar nicht. Bring einen Unterschied rein, und sei es ein Hidden-Element.
[...] Unterschieden habe ich immer nur anhand von <input type="submit" name="FORM_1"> [...] Kann man dann nicht abfragen (Pseudo Code):
Wenn auf FORM_1 geklickt wurde, dann ...
Jein, jedenfalls nicht so direkt, denn beim Server kommen keine Clicks an, sondern das was der Browser als Request versendet: Name-Value-Pärchen.
Wenn du einen festgelegten Namen hast, kannst du recht einfach darauf zugreifen, um an den zugehörigen Wert zu gelangen. Wie das geht, dürfte dir ja bekannt sein, weil das zu den Grundlagen der Formularverarbeitung gehört. Wenn der Name nicht festgelegt ist sondern einer von mehreren Werten sein kann, musst du fragen, ob einer dieser Namen mitgesendet wurde, und das für jedem einzeln (oder du denkst dir einen Algorithmus aus, der das cleverer anstellt.) Bei PHP kommt ja ein Array mit den Name-Value-Pärchen an: das bekannte $_GET/$_POST/$_REQUEST. Wie das jeweils aussieht, zeigt die eine Kontrollausgabe mit print_r() oder var_dump(). Die "Schwierigkeit" beim Name liegt darin, aus den Keys dieses Arrays herauszulesen, ob ein bestimmter (einer von mehreren in deinem Fall) vorhanden ist oder nicht. Hinzu kommt noch die schon erwähnte Unwägbarkeit des Überhaupt-Vorhandenseins dieses Name-Value-Pärchens. Und der Ersatz dafür ist ein Hidden-Element. Wenn du also sowieso ein Hidden-Element einfügen musst, kannst du es dir ja auch gleich mit der Auswertung einfacher machen, als Name einen feststehenden Wert verwenden und in Value beispielsweise den jeweiligen Formularnamen eintragen.
Lo!