Page 1 sur 1

Formulaire type image - plusieurs fois le même nom

Posté : 21 avr. 2008, 20:39
par bunk
Bonsoir,

J'ai un formulaire issu d'une petite boucle qui me rend ceci :

Code : Tout sélectionner

<form name="lang" method="post" action=""> <input type="image" class="pict_lnk" value="en" name="flag_lang" src="images/flag/en.gif" alt="EN" title="EN" /> <input type="image" class="pict_lnk" value="fr" name="flag_lang" src="images/flag/fr.gif" alt="FR" title="FR" /> </form>
Comme vous pouvez le constater les bouton portent le même nom mais non pas la même valeur, grâce à ceci :
echo nl2br(print_r($_POST, true));
Je m'aperçois que IE me retourne :

Code : Tout sélectionner

Array ( [flag_lang_x] => 9 [flag_lang_y] => 4 )
et Firefox :

Code : Tout sélectionner

Array ( [flag_lang_x] => 13 [flag_lang_y] => 7 [flag_lang] => fr )
Je comprend facilement que lorsque je récupère le champ $flag_lang cela ne fonctionne que sur firefox ! Comment faire alors pour que cela fonctionne partout ?

Ce qui m'intéresse, à récupérer c'est la value de mon bouton image.

Si vous avez une petite solution ou des début de piste qui me permettrait de comprendre un peu plus je suis preneur !

D'avance merci

Posté : 21 avr. 2008, 22:54
par Nagol
deux champs de formulaires qui ont le même nom si tu veux les deux à l'arrivée alors tu rajoutes [] dans le name, ca en fera des array une fois arrivé dans le $_POST

ceci dis je me demande quel est l'interêt de récupérer deux valeurs qu'un utilisateur ne peut pas modifier :?:

Posté : 21 avr. 2008, 22:59
par Ryle
Le principe des input de type image est de soumettre un formulaire en indiquant les coordonnées de la zone cliquée sur l'image. L'attribut value n'a donc - en théorie - rien à faire là, et bien que FF le gère, ce n'est pas un usage correct de cet élément....

Tu peux remplacer les inputs de type "image" par des input de type "submit" auquel cas tu récupéreras bien la valeur, ou mieux encore, utiliser l'élément <button> (avec un type="submit") qui te permet d'afficher une image dans un bouton. (à nettoyer avec un peu de css si tu ne veux pas des bordures, etc.)

Posté : 22 avr. 2008, 15:44
par bunk
Bonjour,

merci pour vos réponses, je n'ai pas encore testé mai je vais essayer ceci : (confirmation du fonctionnement ce soir)

Code : Tout sélectionner

<form name="lang" method="post" action=""> <input type="submit" class="flag_lng" style="background:url(images/flag/en.gif) no-repeat; value="en" name="en" /> <input type="submit" class="flag_lng" style="background:url(images/flag/fr.gif) no-repeat; value="fr" name="fr" /> </form>
avec CSS :

Code : Tout sélectionner

.flag_lng { width: 16px; // A mettre dans le style si les tailles sont différentes height: 10px; // Idem border: none; }
et pour traitement :
if($submit) {
extract ($_POST, EXTR, OVERWRITE);
echo'test';
}
en espérant que cela fonctionne !

Posté : 22 avr. 2008, 17:30
par Invité
Bon alors ca fonctionne, mais maintenant le texte de value s'affiche sur mes images et ca fait pas très propre...

Code : Tout sélectionner

<input class="flag_lng" name="en" type="submit" value="en" style="background:url(images/flag/en.gif) no-repeat;" />
je vais chercher mais si vous avez une idée... :)

merci pour l'aide

Posté : 22 avr. 2008, 19:39
par bunk
bon alors en fait je crois que je vais faire comme ça plutôt :

Code : Tout sélectionner

<button type="submit" name="flag_lang" value="fr" style="padding: 0px 0px 0px 0px; background:white; border:none; cursor: pointer;"> <img src="images/flag/fr.gif" alt="fr" title="fr" /> </button>

le truc c'est que je vais devoir appliquer un traitement car sous FF ça me renvois bien fr mais sous IE il me renvoie l'image...

CORRECTION :

finalement je vais utiliser ceci :

Code : Tout sélectionner

<input style="cursor: pointer; width: 16px; height: 10px; font-size: 0px; background-image: url(images/flag/fr.gif); border: 0;" type="submit" name="flag_lang" value="fr" />
qui me renvoi bien fr sous FF et IE !

si ça peux servir.