begin process at 2012 05 29 14:38:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Function & Méthodes

 > 

[JS/PHP] Vérifier plusieurs radios d'un form


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[JS/PHP] Vérifier plusieurs radios d'un form

vendredi 22 avril 2011 à 13:50:48 | [JS/PHP] Vérifier plusieurs radios d'un form

mymemorial

Bonjour,

J'ai un formulaire en PHP que je remplis à l'aide d'une base de donnée mySQL. J'ai donc plusieurs questions et plusieurs choix qui sont affectées à chaque question.
Jusque là, l'affichage du formulaire est bon, pas de problème.

Maintenant, je voudrais vérifier si au moins un choix a été fait pour chaque question.
Si j'oublie de cocher un des radios d'une question, le formulaire ne doit pas s'envoyer.

J'essaye donc de faire une fonction Javascript qui me permet de vérifier que l'utilisateur a répondu à toutes les questions. Voici mon code JS :

Code Javascript :
<script language="javascript">
 function verif()
 {
	 var res = false;
	 var result = false;
	 var l= 0;
	 var j;
	 var radios = document.getElementsByTagName('input');
	 for(j=1;j<3;j++) 

// le 3 c'est juste pour tester les 2 premières questions d'abord, après je me débrouillerais pour prendre l'ID de la dernière question depuis la requete SQL du form pour savoir le nombre de questions total du form

	 {
		l = radios.length;
		result = false; 
	    for (var k=0;k<l;k++)
		{
	      if((radios[j].name == j)&&(radios[k].checked))

// Et c'est la ou j'ai eu des problemes : oui, le name des radios est un int, c'est en fait l'ID des questions ('1' et '2' dans ce cas).
// Ici, je veux que si pour chaque question, il ne trouve pas de choix checked, il me renvoie la valeur result qui sera false (vu que je lui donne la valeur false pour chaque question)

	      {
		   result = true;
	      }
	    }
		if(result!=true)
		{
			alert("Attention! Un champ n'a pas ete saisi!");
			return result;
		}
	 }

// si pour chaque question la valeur de la variable result est true, alors arrivé ici je donne a la variable res la valeur true pour la retourner a mon form.

	 res = true;
	 return res;
 }
</script>


En testant ce code, ca m'affiche toujours l'alerte "Attention", meme si je coche les choix des 2 premières questions.

Et voici une partie de mon script PHP. J'ai enlevé les boucles, les connexions à la base de données, etc, mais je sais qu'il n'y a aucun problème à ce niveau la :

Code HTML :
<form name="form" action="Test4.php" method="post" onSubmit="return verif();"/>
<!--On va d'abord afficher ici les questions-->
<?php echo $data[1]; ?>
<!--On va afficher ici les differents choix de chaque question sous forme de radio-->
<input type="radio" id="<?php echo $data1[0]; ?>" name="<?php echo $data1[3]; ?>" value="<?php echo $data1[2]; ?>"/><?php echo $data1[1]; ?>
 <input type="submit" value="Envoyez vos reponses!"/>
</form>


J'ai connu des problèmes au niveau du "name" des radios qui sont des int (les ID des questions, soit 1, 2, 3...)
vendredi 22 avril 2011 à 15:03:32 | Re : [JS/PHP] Vérifier plusieurs radios d'un form

jopop

Réponse acceptée !
Salut,

Alors déjà je te déconseille d'identifier tes tag par des entiers purs, concatène plutôt avec une lettre, du genre "Q1.1", "Q1.2" ...

Ensuite tu récupères la liste de tous les input, ce qui comporte les radio mais aussi les boutons, les textbox, les check ... Ce qui pourrait être la source de ton erreur : en effet, buttonInput.checked renvoie false. Tu devrais donc vérifier, lors de ton parcours, que tu es bien sur un radio.

Enfin, les index en JS commence à 0 (zéro). Or ta boucle sur j commence à 1 (un).
vendredi 22 avril 2011 à 15:20:34 | Re : [JS/PHP] Vérifier plusieurs radios d'un form

mymemorial

Coucou jopop, merci beaucoup pour ta réponse.

Tu as raison pour les input, même si je n'ai que des radios dans mon formulaire en ce moment. J'ai remplacé la ligne :
Code Javascript :
if((radios[j].name == j)&&(radios[k].checked))

Par :
Code Javascript :
if((radios[j].type == 'radio')&&(radios[j].name == j)&&(radios[k].checked))

En espérant que ça fasse l'affaire ^^

Sinon pour le j, je l'ai commencé par 1 car l'ID de ma première question est 1 (désolé, j'ai oublié de le préciser).

Par contre j'aime bien ton idée de concaténation, pourrais-tu me donner un coup d'pouce ?
Si je remplace dans mon code HTML :
Code HTML :
<input type="radio" id="<?php echo $data1[0]; ?>" name="<?php echo $data1[3]; ?>" value="<?php echo $data1[2]; ?>"/><?php echo $data1[1]; ?>

Par ce qui suit en ajoutant "q" au nom :
Code HTML :
<input type="radio" id="<?php echo $data1[0]; ?>" name="q<?php echo $data1[3]; ?>" value="<?php echo $data1[2]; ?>"/><?php echo $data1[1]; ?>


Est-ce que ce qui suit est juste ?
Code Javascript :
if((radios[j].type == 'radio')&&(radios[j].name == 'q'+j)&&(radios[k].checked))


J'ai toujours le "Attention" qui pop, j'ai du rater la concaténation dans le script...

Je suis persuadé que le problème reste dans le "name", si tu peux m'aider encore sur ce point, ce serait sympa!
vendredi 22 avril 2011 à 15:25:04 | Re : [JS/PHP] Vérifier plusieurs radios d'un form

mymemorial

Euh en fait je crois que c'est bon là! =)

Ce n'était pas :
Code Javascript :
if((radios[j].type == 'radio')&&(radios[j].name == 'q'+j)&&(radios[k].checked))

Mais :
Code Javascript :
if((radios[k].type == 'radio')&&(radios[k].name == 'q'+j)&&(radios[k].checked))


Peux-tu me confirmer que c'est bon ? =)
Je viens de tester et apparemment ça marche... ^_^
vendredi 22 avril 2011 à 16:13:55 | Re : [JS/PHP] Vérifier plusieurs radios d'un form

jopop

Réponse acceptée !
Re,

J'étais en train de voir comment j'aurais codé le truc ^^
Et en fait j'aurai pas fait comme toi ><

Voilà comment je verrais les chose :
- Le HTML que je tenterai de générer avec PHP (ou XXX correspond à un UID pour retrouver la réponse dans la BDD) :
Code HTML :
	<label>Ma première question ?</label><br />
	<input type="radio" id="R1.1" name="Q1" value="XXX" />Oui<br/>
	<input type="radio" id="R1.2" name="Q1" value="XXX" />Non<br/>
	<input type="radio" id="R1.3" name="Q1" value="XXX" />Ptèt<br/>

	<label>Ma deuxième question est-elle à la framboise ?</label><br />
	<input type="radio" id="R2.1" name="Q2" value="XXX" />Non, au citron<br/>
	<input type="radio" id="R2.2" name="Q2" value="XXX" />42<br/>
	<input type="radio" id="R2.3" name="Q2" value="XXX" />Hardy<br/>

[..]


- Le script JS de vérification :
Code Javascript :
	var nbQ = <?php echo mon_nombre_de_questions; ?>
	for (i=1;i<=nbQ;i++) {
		// on récup' un groupe de réponses
		var reps = document.getElementsByName("Q"+i);
		// on parcours les réponses
		var gchecked = false;
		for (j=1;j<=reps.length;j++) {
			if (reps[j].checked) && (!gchecked))
				gckecked = true;
		}
		if (!gchecked) return false;
	}
	return true;


Alors je sais pas bien si ça va t'aider alors que je fais pas vraiment comme toi. Sinon, oui, il semblerait que tu te sois trompé d'itérateur et qu'il faille utiliser k, d'ailleurs on peut voir que depuis le début tu testes radio[k].checked ;)
vendredi 22 avril 2011 à 17:40:10 | Re : [JS/PHP] Vérifier plusieurs radios d'un form

mymemorial

Oh, j'aime bien comment tu vois les choses! ^^

J'avais aussi pensé à getElementsByName au début, avant que j'ajoute le "q" au name, et comme getElementsByName(int) ne me donnait rien, j'ai du changer de plan!

En tout cas, merci beaucoup pour ton aide, tu es génial!
Très bonne soirée ^_^

(Et hop, réponse acceptée!)


Cette discussion est classée dans : code, php, var, js, radios


Répondre à ce message

Sujets en rapport avec ce message

Transmettre une variable JS au Php [ par francoisch ] Bonjour   <p class="MsoNormal" style="MARGIN: 0cm Porbleme de graphique et tableau avec JQUERY [ par nicoferra ] Bonjour,Voici mon problème :Je crée des tableaux en php que je transforme en suite en javascript (voir le code ci-dessous) pour les utiliser avec jque Envoyer plusieurs variables dans le open [ par fabricioliking ] Bonjour, Voila j'aimerai pouvoir envoyer grâce au javascript dans une page php deux variables.voici un extrait du code contenant mon formulaire : [COD Application sur template de phpBB [ par MChauban ] Je développe une application PHP/HTML/AJAX en utilisant le framework de phpbb. Ce code fonctionne sur l'environnement de dév IE7 mais pas avec les aut Fonction php couplée à ajax : Ca ne fonctionne pas pourquoi ??? [ par StevenL86 ] Hello, Me revoilà avec mes cas foireux [^^happy8]. Ce coup çi,j'ai écrit un script php que voici :[code=php] $var=$_GET['id']; $val=$var+1; $texte=$_G Fonction php couplée à ajax : Ca ne fonctionne pas pourquoi ??? [ par StevenL86 ] Hello, Me revoilà avec mes cas foireux [^^happy8]. Ce coup çi,j'ai écrit un script php que voici :[code=php] $var=$_GET['id']; $val=$var+1; $texte=$_G Problème d'exécution JS dans retour ajax [ par fabulofr ] Bonjour à tous :) J'ai un p'tit sushi :D euh.. souci lol ^^ Je fais une requête ajax sur mon serveur bref je vous passe les détails du code ajax... Code php fonction js .... possible ?? [ par abdinfo6 ] Bonjour j'ai cetet fonction et j'aimerais qu'elle soit valide. Elle se déclenche sur un évenenement onclick : function verif() { var cli = document. Transfert variables Javascript [ par riyuhou ] Bonjour à tous. Je viens vers vous aujourd'hui car j'ai un petit souci qui commence à me prendre la tête. Je vais essayer d'être le plus clair possibl W3C et & dans un code javascript [ par nicolazik ] Bonjour, j'ai un soucis avec un code du générateur de bannière aléatoire, je l'utilise pour afficher aléatoirement des publicités, or les liens des i


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales