formular-problem mit javascript & php
hYpeRbLasT.- 25.08.2002 - 00:46 879 12
hYpeRbLasT.-
Bloody Newbie
|
ich möcht ein formular gern mit javascript absenden
ich liste eine reihe von produkten auf (mit php aus einer mysql-db ausgelesen) und verlinke den "weiter"-button (für den nächsten schritt) mit javascript:document.form.submit()
das problem ist jetzt, ich müsste dem ganzen noch irgendwie einen parameter mitgeben, der die produkt-id ebenfalls sendet
das problem könnte man natürlich lösen, indem man checkboxen verwendet oder für jedes produkt ein eigenes form verwendet aber das scheint mir doch unnötig (bzw. checkboxen nicht mit dem design geeignet ...)
ums ca. in html-code zu fassen: <td>Produkt 1: <a href="javascript:document.form.submit()"><img src="weiter-button.jpg"></td> <td>Produkt 2: <a href="javascript:document.form.submit()"><img src="weiter-button.jpg"></td> usw.
und die produkt-id muss eben auf der ziel-seite verfügbar sein
hat jemand eine ahnung, wie das zu lösen ist?
greetz
|
Vir@s
Code Monkey
|
Wie wärs wenn du das ganze einfach mit nem Hidden Feld oder einem Image Feld machst? In etwa so: <TD><INPUT type='image' src='weiter-button.jpg' name='produkt-id' value='id1'></TD> <TD><INPUT type='image' src='weiter-button.jpg' name='produkt-id' value='id2'></TD>
Damit ist das ganze sauber gelöst und zwar ohne JS.
Mfg, Vir@s
|
bernhard
Little Overclocker
|
Zweifellos ist eine Lösung ohne Javascript anzustreben. Wie hier ein <input type="hidden"> in einem einzigen <form> funktionieren soll, verstehe ich allerdings nicht ganz, da dessen value ja schon vor dem submit feststehen muß und somit nicht (mehr) von dem gewählten Produkt abhängen kann.
conclusio #1: Da die Seite sowieso scriptunterstützt erstellt wird, würde ich für jedes Produkt ein eigenes <form> mit passendem <input type="hidden"> vorsehen. Ziemlich straightforward.
conclusio #2: Wenn Du - wie es scheint - Grafiken als submit-buttons bevorzugst, so ist natürlich Vir@s' Vorschlag vorzuziehen. Hier bekommst Du sogar zusätzlich die Koordinaten des Klicks als produkt-id_x und produkt-id_y frei Haus geliefert. Ziemlich geeky.
hint: Mehrere submit-buttons sind auch ohne <input type="image"> möglich, man muß ihnen nur einen name geben. Nachteil: Der value wird zur Beschriftung mißbraucht.
|
watchout
Legendundead
|
conclusio #1: Da die Seite sowieso scriptunterstützt erstellt wird, würde ich für jedes Produkt ein eigenes <form> mit passendem <input type="hidden"> vorsehen. Ziemlich straightforward.
conclusio #2: Wenn Du - wie es scheint - Grafiken als submit-buttons bevorzugst, so ist natürlich Vir@s' Vorschlag vorzuziehen. Hier bekommst Du sogar zusätzlich die Koordinaten des Klicks als produkt-id_x und produkt-id_y frei Haus geliefert. Ziemlich geeky.
hint: Mehrere submit-buttons sind auch ohne <input type="image"> möglich, man muß ihnen nur einen name geben. Nachteil: Der value wird zur Beschriftung mißbraucht. ups - falsch verstanden
Bearbeitet von watchout am 25.08.2002, 20:26
|
watchout
Legendundead
|
blede frage: wieso machst du's nicht wie folgt: <a href='datei.php?produktID=1'><img src='...'></a> <a href='datei.php?produktID=2'><img src='...'></a> <a href='datei.php?produktID=3'><img src='...'></a>
im php-script ist die produkt-id dann wieder unter $HTTP_GET_VARS['produktID'] abrufbar...
Edit:ausserdem kann der user die frage ob er daten ans internet schicken will net kriegen
Bearbeitet von watchout am 25.08.2002, 20:27
|
bernhard
Little Overclocker
|
... bzw. $_GET['produktID'] seit PHP 4.1.0.
Wie Du mir klassisch vor Augen führst, habe ich mich tatsächlich zu sehr auf die submit-Idee eingeschossen und andere (bessere?) Lösungsansätze ganz außer Acht gelassen. Soll nicht wieder vorkommen.
|
watchout
Legendundead
|
... bzw. $_GET['produktID'] seit PHP 4.1.0.
Wie Du mir klassisch vor Augen führst, habe ich mich tatsächlich zu sehr auf die submit-Idee eingeschossen und andere (bessere?) Lösungsansätze ganz außer Acht gelassen. Soll nicht wieder vorkommen. brav ![:D](/images/smilies/biggrin.gif) ja $_GET geht auch - nur halt $HTTP_GET_VARS zu schreiben bringt niemand um und man kann das script auch in V3 verwenden - ausserdem isses imho übersichtlicher $HTTP_GET_VARS zu schreiben - najo, das fällt dann wieder mal unter programmierstil
|
bernhard
Little Overclocker
|
ad $HTTP_GET_VARS (slightly OT): Vorteil: backward compatible zu PHP3 (welche praktische Bedeutung hat PHP3 noch?) Nachteil: deprecated(!), nicht (super|auto)global
|
watchout
Legendundead
|
ad $HTTP_GET_VARS (slightly OT): Nachteil: deprecated(!), nicht (super|auto)global huch - isses wirklich? wusste nix davon... wieder "gratulation" an die doku... edit: was soll (super|auto)global heissen?
|
hYpeRbLasT.-
Bloody Newbie
|
thx für die antworten ... irgendwie hab ich keine emails kriegt obwohl ich notification an hatte ![:)](/images/smilies/smile.gif) also hab ichs auf eigene faust versucht und es auch geschafft! falls es wen interessiert: function submitForm (prodID) { document.form.produktid.value = prodID; document.form.submit(); } dann hab ich im formular ein hidden-element erzeugt: <input type="hidden" name="produktid" value=""> und die buttons der einzelnen produkte (die ja in einer while-schleife aus der db ausgelesen werden) so verlinkt: echo "<a href=\"javascript:submitForm(".$produkt[id].")\">image</a>"; trotzdem big thx für eure antworten ... aber das mit dem verlinken like: datei.php?produktID=x geht nicht, weil ich auch noch select-felder hab ![:)](/images/smilies/smile.gif) sprich es muss ein form sein ![:)](/images/smilies/smile.gif) und das mit <input type="image"> hab ich gar nicht gewusst dass es das gibt ![:D](/images/smilies/biggrin.gif) thx dafür greetz
|
watchout
Legendundead
|
|
bernhard
Little Overclocker
|
|
Vir@s
Code Monkey
|
Ich glaube hier hat wer zuviel Zeit auf der php.net Homepage verbracht ![:D](/images/smilies/biggrin.gif) Mach des ganze lieber mit dem IMAGE Input field, denn das ist die wesentlich sauberere Lösung, die eigentlich in jedem Browser gehen sollte.
|