Bonjour,
L'intitulé de mon post est un grand classique je crois. Pourtant, après avoir épluché de nombreux forums, je n'ai pas trouvé de solution à mon problème.
Mon problème est donc très simple. Je soumets un formulaire à un internaute, mais avant de l'envoyer vers ma BDD SQL, je veux vérifier si au moins une réponse à été cochée. J'ai effectué jusqu'ici ce contrôle en PHP. Ça fonctionne mais le code est lourd, lent et maladroit (je suis obligé de transmettre le formulaire avant de pouvoir effectuer la moindre vérification). Le Javascript s'impose ici à mon sens.
Dans mes réponses, j'ai plusieurs types d'entités : des checkboxes, des boutons radios ou encore des champs de texte. A chaque fois qu'une réponse est cochée, son indice est placé dans "reponse[]", une variable de type array. Pour plus de clarté, voici le bout de code en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <form action="sondage.php" method="post" name="formulaire" onsubmit="return verifier()"> [...] // Bouclage sur le choix des réponses while ($j <= $nb_reponses_array['r']+$i*100) { // On va chercher le choix et son type dans une BDD $reponse = mysql_query("SELECT r, q_type FROM FQ59_qr WHERE num = '$j'"); $reponse_array = mysql_fetch_array($reponse); // Bouton radio if($reponse_array['q_type'] == 'radio') { echo '<input type="radio" name="reponse[]" value="'.$j.'">'; echo ' '.$reponse_array['r'].'<br />'; } // Champ de caractères else if($reponse_array['q_type'] == 'champ') { echo $reponse_array['r'].' '.'<input type="text" name="reponse[]">'.'<br />'; } // Checkbox else { echo '<input type="checkbox" name="reponse[]" value="'.$j.'">'; echo ' '.$reponse_array['r'].'<br />'; } $j++; }
Et voici la fonction Javascript :
Ce code a pour effet le passage à la question suivante même si aucune réponse n'est donnée. Je crois que le problème a lieu au moment d'aller récupérer le contenu de reponse .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <SCRIPT language="Javascript"> <!-- function verifier() { if ( document.forumlaire.reponse.value == "" ) { alert("Vous devez choisir au moins une réponse"); return false; } else { return true; } } // --> </SCRIPT>
J'espère que ce post est assez clair. Je peux vous fournir toute information complémentaire si vous en avez besoin.
Bonne journée à toutes et à tous !
pinbeu
Partager