formular-problem mit javascript & php

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/formular-problem_mit_javascript_amp_php_45828/page_1 - zur Vollversion wechseln!


hYpeRbLasT.- schrieb am 25.08.2002 um 00:46

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 schrieb am 25.08.2002 um 02:13

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 schrieb am 25.08.2002 um 04:23

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 schrieb am 25.08.2002 um 20:16

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 :)


watchout schrieb am 25.08.2002 um 20:21

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


bernhard schrieb am 25.08.2002 um 22:26

... 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 schrieb am 25.08.2002 um 22:43

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 schrieb am 25.08.2002 um 23:50

ad $HTTP_GET_VARS (slightly OT):
Vorteil: backward compatible zu PHP3 (welche praktische Bedeutung hat PHP3 noch?)
Nachteil: deprecated(!), nicht (super|auto)global


watchout schrieb am 26.08.2002 um 00:30

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.- schrieb am 26.08.2002 um 01:07

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 schrieb am 26.08.2002 um 01:23

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 schrieb am 26.08.2002 um 01:46

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 schrieb am 26.08.2002 um 09:12

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025