[SOUCIS RESOLU] Conflit entre input hidden ? Etrange...

WRInaute discret
Rebonjour,

Toujours sur mon panier de commande, je suis maintenant confronté à un soucis qui m'aura rongé toute l'après midi.
J'ai eu beau chercher sur la jungle internet je n'ai pas trouvé réponse à mon problème (je ne vous cache pas non plus que j'ai pas passé 2heures à chercher)

Voici mon soucis :
Sur ma page "panier", je dispose de plusieurs boutons de type image ainsi que d'input text pour modifier les quantités des produits désirés.
Ma page comporte donc un formulaire "général" qui contient tout ça.
Code:
<form method="post" name="form_Cart">
Le hic est que seul mon dernier input (dans l'ordre d'affichage de mon HTML) est pris en compte.

Voici le code de mes boutons
Recalculer :
Code:
<input type="hidden" name="form_Cart" value="recalculer">
<input type="image" name="recalculer" value="recalculer" src="http://img.swan-danse.com/boutons/recalculer.png" alt="" border="0">
Acheter :
Code:
<input type="hidden" name="form_Cart" value="acheter">
<input type="image" name="acheter" value="acheter" src="http://img.swan-danse.com/boutons/acheter.png" alt="" border="0">

Et dans mon php j'ai mis ceci :
Code:
		if(isset($_POST['form_Cart']) && $_POST['form_Cart'] == 'acheter'){
		echo 'test';
		}
Il ne devrait donc afficher mon echo uniquement si j'ai cliqué sur mon bouton acheter (enfin ca me paraitrait logique).
Mais il l'affiche ou que je clique ...

Je suis "largué".
Si quelqu'un sait d'ou vient ce soucis (qui ne doit pas être sorcier), merci de m'aider.

Bonne soirée,
Rémi
 
Nouveau WRInaute
Salut,

Tu as 2 boutons image pour valider le même formulaire ?
Dans ce cas normal ta variable form_Cart vaudra toujours la dernière valeur que tu lui attribue (en l'occurence "acheter").

Pour commencer je ne crois que ce sois bon que ton formulaire porte le même nom que ta variable, mieux de le changer, par ex:

Code:
<form method="post" name="cart">

Place cette ligne une seule fois dans ton formulaire:
Code:
<input type="hidden" name="form_Cart" value="">

Puis ton bouton recalculer:
Code:
<a href='#' onClick='document.cart.form_Cart.value="recalculer"; submit();'><img src="http://img.swan-danse.com/boutons/recalculer.png" alt="" border="0"></a>

Ton bouton acheter :
Code:
<a href='#' onClick='document.cart.form_Cart.value="acheter"; submit();'><img src="http://img.swan-danse.com/boutons/acheter.png" alt="" border="0"></a>

Normalement ça devrait jouer...
 
WRInaute impliqué
Pourquoi ne pas faire un test sur la présence du paramètre correspondant à ton bouton:
Code:
<form>
<input type="image" name="recalculer" value="recalculer" src="http://img.swan-danse.com/boutons/recalculer.png" border="0">
<input type="image" name="acheter" value="acheter" src="http://img.swan-danse.com/boutons/acheter.png" border="0">
</form>

Et ensuite:
Code:
if( isset( $_REQUEST['recalculer'] ) ) {
  echo "Bouton recalculer pressé.";
}
else if( isset( $_REQUEST['acheter'] ) ) {
  echo "Bouton acheter pressé.";
}

.
 
WRInaute discret
ma-villefr : ta solution marche parfaitement sous IE ... mais pas firefox
shrom : tout l'inverse du monsieur au dessus ....

c'est fou de lutter autant pour trouver une comptabilité entre les navigateurs !
 
Nouveau WRInaute
Ouaip.. c'est la guerre entre eux, et c'est nous pauvres petits webmaster gentils qui souffront !

Essaies peut-être comme ça:

Code:
<a href='javascript:document.cart.form_Cart.value="recalculer"; submit();'<img src="http://img.swan-danse.com/boutons/recalculer.png" alt="" border="0"></a>

Mais j'avais fait ça parce que dans mons cas le urlrewrite n'aimait pas "#" dans le href... Ca fonctione sous IE, FF et Opéra en tout cas...
 
WRInaute impliqué
aiepepito a dit:
ma-villefr : ta solution marche parfaitement sous IE ... mais pas firefox
shrom : tout l'inverse du monsieur au dessus ....

Bon alors tu fais un test sur $_REQUEST['acheter_x'] et sur $_REQUEST['recalculer_x'], c'est pas non plus compliqué de faire
Code:
print_r( $_REQUEST );
pour voir les variables réellement envoyées.

.
 
WRInaute discret
Oui shrom je viens de le faire et voici le résultat

Firefox
Code:
Array ( [lng] => 1 [qty2] => 4 [recalculer_x] => 36 [recalculer_y] => 8 [recalculer] => recalculer [PHPSESSID] => 6a0843ebc0f36e2ea81ed57834412ab2 )

IE
Code:
Array ( [lng] => 1 [qty2] => 4 [recalculer_x] => 24 [recalculer_y] => 9 [PHPSESSID] => 31b405f82735b54ce8c9997f4b0e3cbe )

[recalculer] => recalculer ne passe donc qu'uniquement sous FIREFOX.
Je commence à être véritablement largué, déjà que tout ceci est assez difficil pour moi, les navigateurs me compliquent vraiment la tache ..... :(
 
WRInaute discret
Moultes excuses mon cher e-kiwi j'avais zappé ton message

"et pourquoi t'appelles tous tes champs et ton formulaire "form_cat" ?"
Tout simplement parce que je suis un jeune développeur assez bête (aie mon égo) et que j'ai encore vraiment du mal avec les input hidden (je n'en avais jamais eu besoin jusqu'à ce jour).
J'ai tenté de changer les noms mais rien n'y fait (peut être m'y suis-je mal pris... mais je pense pas).

Donc la je suis en train de finaliser mon traitement (vu que mes boutons passent sous firefox), je me reprendrai la tête en fin d'après midi en tachant de trouver (enfin!) une solution.
 
Nouveau WRInaute
Je me répète, mais j't'y jure ça marche sur IE et FF:

Ton bouton recalculer:
Code:
<a href='javascript:document.cart.form_Cart.value="recalculer"; submit();'<img src="http://img.swan-danse.com/boutons/recalculer.png" alt="" border="0"></a>

Ton bouton acheter:
Code:
<a href='javascript:document.cart.form_Cart.value="acheter"; submit();'<img src="http://img.swan-danse.com/boutons/recalculer.png" alt="" border="0"></a>

C'est ce que j'utilise pour mon panier :
-http://montpellier.ma-ville.fr/abonnes,74,2.html (la boutique)
-http://montpellier.ma-ville.fr/shop_panier.html (le panier)
 
WRInaute discret
Soucis réglé!
J'ai testé ta dernière solution (celle mise en place sur tes sites ma-villefr) et ca ne passait toujours pas.
J'ai donc finalement opté pour mettre un second formulaire pour traiter mon bouton "acheter"... et au final ca marche très bien sous tout les navigateurs, donc je vais plus y toucher.

Merci beaucoup pour votre aide
 
Discussions similaires
Haut