"We are back" « oc.at

formular-problem mit javascript & php

hYpeRbLasT.- 25.08.2002 - 00:46 879 12
Posts

hYpeRbLasT.-

Bloody Newbie
Registered: Aug 2002
Location: tirol
Posts: 4
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
Registered: Nov 2000
Location: Wien
Posts: 730
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
Registered: Feb 2001
Location: NÖ
Posts: 51
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von bernhard
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Registered: Feb 2001
Location: NÖ
Posts: 51
... 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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von bernhard
... 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
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
Registered: Feb 2001
Location: NÖ
Posts: 51
ad $HTTP_GET_VARS (slightly OT):
Vorteil: backward compatible zu PHP3 (welche praktische Bedeutung hat PHP3 noch?)
Nachteil: deprecated(!), nicht (super|auto)global

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von bernhard
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
Registered: Aug 2002
Location: tirol
Posts: 4
thx für die antworten ... irgendwie hab ich keine emails kriegt obwohl ich notification an hatte :) 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 :) sprich es muss ein form sein :)

und das mit <input type="image"> hab ich gar nicht gewusst dass es das gibt :D thx dafür

greetz

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von hYpeRbLasT.-
aber das mit dem verlinken like:
datei.php?produktID=x
geht nicht, weil ich auch noch select-felder hab :) sprich es muss ein form sein :)
dann mach's mitn image-feld is' dann noch die beste lösung ;)

bernhard

Little Overclocker
Registered: Feb 2001
Location: NÖ
Posts: 51
ad (super|auto)global:
Syntaktisch soll das eine regular expression darstellen.
Semantisch heißt es, daß $_GET in _jedem_ scope automatisch global ist, während $HTTP_GET_VARS eventuell erst mit global $HTTP_GET_VARS; oder aus $GLOBALS - übrigens dem ersten superglobal, existent seit PHP 3.0.0 - geholt werden muß.

<http://www.php.net/manual/en/langua....predefined.php>
<http://www.php.net/manual/en/reserved.variables.php>

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Ich glaube hier hat wer zuviel Zeit auf der php.net Homepage verbracht :D

Mach des ganze lieber mit dem IMAGE Input field, denn das ist die wesentlich sauberere Lösung, die eigentlich in jedem Browser gehen sollte.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz