Checkboxes ne donne pas tous leurs résultats
Résolu/Fermé
Judes-Emile Bornes IV
-
23 janv. 2009 à 12:25
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 26 janv. 2009 à 23:12
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 26 janv. 2009 à 23:12
A voir également:
- Checkboxes ne donne pas tous leurs résultats
- Lexer resultats - Télécharger - Sport
- Resultats foot - Télécharger - Vie quotidienne
- Résultats loto 5/90 d'aujourd'hui - Forum Linux / Unix
- Donne camping-car gratuit - Forum Vos droits sur internet
- Résultats 5/90 - Forum Excel
4 réponses
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
25 janv. 2009 à 01:32
25 janv. 2009 à 01:32
Bonjour, je n'arrive pas à imaginer le formulaire derrière cette gestion ni même à comprendre quel résultat incorrect te fournit $tableau par rapport au résultat attendu. Merci de développer pour augmenter tes chances d'obtenir de l'aide. Bien à toi.
Sinon, tant que j'y suis, je trouve quand même risqué d'utiliser la chaîne " - " comme séparateur de champs. Qui te dit que dans l'un des champs, l'utilisateur n'encodera pas un tiret ? Soit tu développes un système pour échapper les tirets, soit tu génères ton résultat au format XML (si tu connais) grâce aux méthodes DOM intégrées dans PHP (la méthode XML est bien évidemment beaucoup plus compliquée à mettre en œuvre mais c'est la plus "logique").
Sinon, tant que j'y suis, je trouve quand même risqué d'utiliser la chaîne " - " comme séparateur de champs. Qui te dit que dans l'un des champs, l'utilisateur n'encodera pas un tiret ? Soit tu développes un système pour échapper les tirets, soit tu génères ton résultat au format XML (si tu connais) grâce aux méthodes DOM intégrées dans PHP (la méthode XML est bien évidemment beaucoup plus compliquée à mettre en œuvre mais c'est la plus "logique").
Judes-Emile Bornes IV
Messages postés
123
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
23 février 2010
12
25 janv. 2009 à 10:02
25 janv. 2009 à 10:02
Les résultats que j'obtiens sont les derniers choix de chaque série de checkbox, quand le choix est multiple...
J'aimerais regrouper les infos par série de checkbox/boutons radio en espérant que ça fonctionne.
merci pour le conseil pour la fonction implode, je vais essayer de générer un fichier xml.
à bientôt
J'aimerais regrouper les infos par série de checkbox/boutons radio en espérant que ça fonctionne.
merci pour le conseil pour la fonction implode, je vais essayer de générer un fichier xml.
à bientôt
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
25 janv. 2009 à 14:35
25 janv. 2009 à 14:35
Ok, enfin je comprends ce qui ne va pas mais je ne comprends pas pourquoi ça ne fonctionne pas dans ton cas puisque je n'ai pas ton code mais c'est pas grave, reprenons depuis le début :
Pour tes checkboxes à choix multiple d'un même groupe, il faut que chaque checkbox porte un nom de cette forme :
Côté PHP, la variable $_POST['interets'] te fournira un tableau de taille égale aux choix de l'utilisateur. C'est à dire que s'il a choisi (coché) "Musique" et "Jardinage", tu auras un tableau de 2 éléments. Ensuite je suppose que tu sais comment parcourir un tableau. Donc vérifie bien que le nom (attribut name) de tes checkboxes se termine par "[]" et qu'ils soient tous identiques (pour chaque groupe je veux dire), c'est peut-être de là que vient ton problème puisque tu obtiens une variable simple au lieu d'un tableau.
Ca fait un bon moment que je ne fais plus de PHP mais je me suis inspiré de http://actuel.fr.selfhtml.org/articles/phpasp/boitacocher/index.htm pour avancer ce que j'écris.
Pour tes checkboxes à choix multiple d'un même groupe, il faut que chaque checkbox porte un nom de cette forme :
<input type="checkbox" name="interets[]" value="Musique" />Musique <input type="checkbox" name="interets[]" value="Arts" />Arts <input type="checkbox" name="interets[]" value="Jardinage" />Jardinage
Côté PHP, la variable $_POST['interets'] te fournira un tableau de taille égale aux choix de l'utilisateur. C'est à dire que s'il a choisi (coché) "Musique" et "Jardinage", tu auras un tableau de 2 éléments. Ensuite je suppose que tu sais comment parcourir un tableau. Donc vérifie bien que le nom (attribut name) de tes checkboxes se termine par "[]" et qu'ils soient tous identiques (pour chaque groupe je veux dire), c'est peut-être de là que vient ton problème puisque tu obtiens une variable simple au lieu d'un tableau.
Ca fait un bon moment que je ne fais plus de PHP mais je me suis inspiré de http://actuel.fr.selfhtml.org/articles/phpasp/boitacocher/index.htm pour avancer ce que j'écris.
Judes-Emile Bornes IV
Messages postés
123
Date d'inscription
dimanche 6 avril 2008
Statut
Membre
Dernière intervention
23 février 2010
12
26 janv. 2009 à 16:13
26 janv. 2009 à 16:13
c'est bon ça marche! merci posotaz,
l'opérateur [] m'a sauvé sur ce coup.
maintenant le truc, c'est que le script autorise l'absence de réponse... est-ce possible?
Car je ne veux pas obliger les internautes à remplir tous les QCM
Je me doute que oui sinon je demanderais pas, mais bon.
dans un premier temps je pense à un truc du genre:
if(!empty($FORM1), $FORM1="pas de reponse") mais est-ce conventionnel?
à +
Fab
l'opérateur [] m'a sauvé sur ce coup.
maintenant le truc, c'est que le script autorise l'absence de réponse... est-ce possible?
Car je ne veux pas obliger les internautes à remplir tous les QCM
Je me doute que oui sinon je demanderais pas, mais bon.
dans un premier temps je pense à un truc du genre:
if(!empty($FORM1), $FORM1="pas de reponse") mais est-ce conventionnel?
à +
Fab
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
26 janv. 2009 à 23:12
26 janv. 2009 à 23:12
Salut Fab,
Content d'avoir pu t'aider. N'oublie pas de mettre le statut "résolu". ;-)
Pour ce qui est des choix non obligatoires, c'est tout à fait correct de dire "empty($le_tableau_de_checks)" mais tu peux tout simplement garder la variable vide puisqu'un "implode séparé par des virgules" d'un tableau de 0 éléments te retournera une chaîne vide, au même titre qu'un champ "texte commentaire" vide.
Cas 2 choix : $form1 = array('bleu', 'vert') => implode(', ', $form1) => "bleu, vert"
Cas 0 choix : $form1 = array() => implode(', ', $form1) => ""
Content d'avoir pu t'aider. N'oublie pas de mettre le statut "résolu". ;-)
Pour ce qui est des choix non obligatoires, c'est tout à fait correct de dire "empty($le_tableau_de_checks)" mais tu peux tout simplement garder la variable vide puisqu'un "implode séparé par des virgules" d'un tableau de 0 éléments te retournera une chaîne vide, au même titre qu'un champ "texte commentaire" vide.
Cas 2 choix : $form1 = array('bleu', 'vert') => implode(', ', $form1) => "bleu, vert"
Cas 0 choix : $form1 = array() => implode(', ', $form1) => ""