verifier un formulaire radio

Petit nouveau ! | 6 Messages

29 avr. 2005, 15:19

bonjour, j'aimerais savoir s'il est possible de verifier un formulaire contenant des radios, sachant qu'ils sont générés en php et que je n'ai donc pas leur nombre exact.

J'aimerais juste bloquer le submit si aucun n'est coché.

merci

Mammouth du PHP | 19672 Messages

29 avr. 2005, 15:32

Hello,
en principe, tes boutons radios ne permettent qu'un seul choix et leur attribut name a la même valeur pour tous: leur nombre importe peu, il te suffit de récupérer la valeur de ce nom. Si l'attribut name a pour valeur "choix_unique", tu récupères $_POST['choix_unique'] : Si tes boutons radio n'ont pas d'attribut "value, par contre là, tu vas avoir un problème.

Pour bloquer le submit, il vaut mieux te tourner vers le JavaScript et un gestionnaire d'Évènement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 6 Messages

29 avr. 2005, 16:09

pardon, je me suis trompé de forum, je poste dans javascript

Eléphanteau du PHP | 32 Messages

29 avr. 2005, 17:52

juste une piste :

Code : Tout sélectionner

<script type="text/javascript"> function ta(maform) //maform= l'id de la forme qui va bien { j=0; for (i=0; i<maform.length; i++) { mesradios = maform.elements[i]; if (mesradios.checked) { j++; } } alert('y a '+j+' cases de cocher'); } </script>
Après suffit de voir par rapport au nombre de réponses que tu attends.
Voilà en espérant que ce code pondu en deux deux te fasse avancer.
@++
Le mieux est l'ennemi du bien mais ça veut pas dire qu'il ne faut pas faire mieux
http://www.idc-solutions.com

Mammouth du PHP | 19672 Messages

29 avr. 2005, 18:17

STOP.... on parle de boutons radio, pas de case à cocher: corrigez moi si je me trompe, mais autant les cases à cocher ont toutes un nom individuel, autant les boutons radios d'une zone doivent en principe servir à un choix unique et pour ce faire ont toutes le même attribut name. Donc ce qui nous intéresse, ce n'est pas le nombre de radios cochés, c'est de savoir si il y en a un de coché ou pas...

Donc la fonction suggérée par jeff34 garde quand même un intérêt : elle demande juste une petite modification :

Quand tu génères tes boutons radios, mets dedans un attribut id="radio".$i , $i étant le pointeur de ta boucle de génération. Tu crées aussi un compteur $nombre_radio que tu incrémentes à chaque nouveau bouton radio

Dans le bouton submit, un évènement on change doit récupérer la valeur du témoin pour continuer le processus ou le bloquer. Pour savoir le nomre d'élément, tu peux utiliser le PHP qui sert à générer tes boutons radios: tu peux connaitre le nombre et t'en servir pour générer dans le bouton submit un paramètre, le nombre de boutons à vérifer.

Reprenons le code de jeff34

Code : Tout sélectionner

<script type="text/javascript"> function verif(nb_radio) { j=0; for (i=0; i<nb_radio; i++) { idradio = "radio"+ i; mesradios = form.elements[idradio]; if (mesradios.checked) { j = 1; } } if(j == 0) { alert('Il n\'y a aucune cases de sélectionnée'); } } </script>
et dans ton formulaire:

Code : Tout sélectionner

<input type="submit" onclick="verif(<?php echo($nombre_radio);?>);"
Voilà, j'espère que ça fonctionne, je ne l'ai pas testé :?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

29 avr. 2005, 18:59

Hello, ça ne marchera pas :-)
D'abord si tu veux sélectionner un truc par son id, mieux vaut utiliser getElementByID, parce que elements il va pas aimer la chaine de caractères.
Par contre ça marchera pas parce que il faut sélectionner le group par son attribut name il me semble. Et je pense pas qu'il y ait une propriété globale "checked" pour ton groupe de radio.
Par contre y a peut être moyen de voir le pb via la propriété value.
Dans mon premier exemple, l'avantage c'est que quand tu sais combien de cases radio sont cochées, tu sais si le gars a répondu à toutes les questions, genre :
question 1 : 3 choix
question 2 : 20 choix
question 3 : 4 choix.
Si j'ai 3 radio coché c'est bon autrement le gars a oublié de coché :-)
Le mieux est l'ennemi du bien mais ça veut pas dire qu'il ne faut pas faire mieux
http://www.idc-solutions.com