Checkboxes ne donne pas tous leurs résultats
Résolu
Judes-Emile Bornes IV
-
Posotaz Messages postés 489 Date d'inscription Statut Membre Dernière intervention -
Posotaz Messages postés 489 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai encore un petit problème, cette fois avec mes checkboxes.
J'ai écrit le code suivant, et il fonctionne presque bien si n'était le fait qu'il ne récupère pas toutes les infos des boutons checkboxes de la page qu'il gère.
En effet si l'on coche deux cases, il ne donne que la dernière réponse. je vais chercher sur le ouèbe, mais si qqn pout m'aider, qu'il le fasse please!
J'ai encore un petit problème, cette fois avec mes checkboxes.
J'ai écrit le code suivant, et il fonctionne presque bien si n'était le fait qu'il ne récupère pas toutes les infos des boutons checkboxes de la page qu'il gère.
En effet si l'on coche deux cases, il ne donne que la dernière réponse. je vais chercher sur le ouèbe, mais si qqn pout m'aider, qu'il le fasse please!
<?php $destinataire = 'fabien@laplumesurlatoile.com'; $sujet='questionnaire'; $FORM1=$_POST['sexe']; $FORM2=$_POST['age']; $FORM3=$_POST['profession']; $FORM4=$_POST['commandesautres']; $FORM5=$_POST['raisons']; $FORM6=$_POST['raisonsautres']; $FORM7=$_POST['delai']; $FORM8=$_POST['symbole']; $FORM9=$_POST['symboleautre']; $FORM10=$_POST['conditionnement']; $FORM11=$_POST['frequenceachat']; $FORM12=$_POST['preferences']; $FORM13=$_POST['habitude']; $FORM14=$_POST['montant']; $FORM15=$_POST['souhaitssite']; $FORM16=$_POST['autressouhaitssite']; $FORM17=$_POST['infos']; $tableau = array ($FORM1, $FORM2, $FORM3, $FORM4, $FORM5, $FORM6, $FORM7, $FORM8, $FORM9, $FORM10, $FORM11, $FORM12, $FORM13, $FORM14, $FORM15, $FORM16, $FORM17); $afficher_check = ""; mail($destinataire, $sujet, implode(" - ",$tableau)); ?>
A voir également:
- Checkboxes ne donne pas tous leurs résultats
- Resultats foot - Télécharger - Vie quotidienne
- Lexer resultats - Télécharger - Sport
- L'url suivante, censée aboutir à un article, donne lieu à une redirection indiquant que la page n'a pas été trouvée. retrouvez la page recherchée. reportez le titre de l’article et son auteur. - Forum Microsoft Edge / Internet Explorer
- Archives résultats bac 1999 - Forum Réseaux sociaux
- Résultats loto 5/90 d'aujourd'hui rdc ✓ - Forum Excel
4 réponses
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").
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
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.
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
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) => ""