cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011
-
10 avril 2008 à 21:21
Axe971
Messages postés75Date d'inscriptionmardi 20 novembre 2007StatutMembreDernière intervention 9 janvier 2009
-
12 avril 2008 à 18:17
Bonjour à tous,
alors je suis en train de réaliser un projet dans lequel je dois mettre en place un système de questionnaires dynamiques.
Tout se passait bien avec d'avoir affaire aux checkbox. Mon problème est que j'ai un formulaire avec mes check du style :
Sachant que je poste mes questions et qu'elles n'ont pas toute des checkbox.
Le pb il faut que j'insère dans ma table sql (resultat)
id_question
id_theme
id_stheme
choix_multi : 1 ou si on a coché plusieurs case alors ça donnera 1;5;etc. (avec ; comme séparateur)
Or là je ne vois pas comment faire car j'arrive à recup les check avec l'id de ceux qui sont coché mais j'ai vraiment du mal car il ne me les associe pas aux questions.
Je mettrai un exemple de mes fichiers demain mais si quelqu'un pouvais me montrer un exemple genre avec 3 questions donc le nom est comme moi une variable et comment dans ce cas afficher après (donc le traitement) les questions et les choix selectionné.
Merci d'avance à ceux qui auront le courage car je vous avoue mon avenir au sein de ma boîte en dépend un peu
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011 10 avril 2008 à 22:37
Voilà un petit exemple pour montrer mon probleme
Moralité à la base je veux pouvoir enregistrer tout type de question. Là je souhaite intégrer dans ma bnase resultat l'id de la question avec le choix et mettre un sépararteur plutôt qu'enregistrer plusieurs fois la même questions si on coche plus d'une option.
Voilà :
if(!empty($_POST["mon_champ"])) {
echo "Vous avez choisi comme option
";
for ($l = 0; $l < count($_POST["question"]); $l++) {
echo $_POST["question"][$l]."
";
if (isset ($_POST['mon_champ'])) {
for ($i = 0; $i < count($_POST["mon_champ"]); $i++) {
Axe971
Messages postés75Date d'inscriptionmardi 20 novembre 2007StatutMembreDernière intervention 9 janvier 20092 10 avril 2008 à 23:11
Salut,
Tu devrais rajouter le numéro de la question à tes checkbox.
En gros au lieu de :
echo "Option ".$nom_choix."
";
il faudra faire quelque chose comme :
echo "Option ".$nom_choix."
";
Et en php dans la page ou tu traites les données du formulaire il faudrait parcourir
mon_chan_num_question comme un tableau pour avoir les choix cochés.
PS: J'espère que le code que tu as donné n'est qu'un exemple, car il me parait un peu tiré par les cheveux...
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011 11 avril 2008 à 17:47
Re,
Merci déjà pour cette réponse. Je vais te montrer ce que j'ai fais du coup. Le pb maintenantc'est que je voudrait assemble les choix multiple par un ; pour la question concernée :
Formulaire
."<td>"
."num question ".$id_question." ".$ordre." - ".$question."</td>"
."<td width= '15%'align='center'>";
IF ($reponse=='oui') {
ECHO "OUINON";
}
ECHO "</td>"
."</tr>";
//SI CHOIX MULTI EGAL A OUI ALORS ON AFFICHE LA LISTE
IF ($choix_multi=='oui') {
ECHO "<tr><td colspan='2'>Choix possibles</td></tr>"
."<tr><td colspan='2'>";
$sql_choix =" SELECT id_choix, id_question, choix, ordre ";
$sql_choix .=" FROM $table_choix ";
$sql_choix .=" WHERE id_question='$id_question'";
$sql_choix .=" ORDER BY ordre asc";
$resultat_choix = mysql_query($sql_choix);
$nb_choix = mysql_num_rows($resultat_choix);
WHILE ($list_choix=mysql_fetch_object($resultat_choix)) {
$id_choix=$list_choix->id_choix;
$id_q=$list_choix->id_question;
$choix=$list_choix->choix;
echo ".id choix ".$id_choix."
";
}
Traitement
$nombre_question =$_POST['nb_tt_questions'];
$i=1;
$type_questionnaire=$_POST['type_questionnaire'];
$p_id_theme=$_POST['id_theme'];
$p_id_client=$_POST['id_client'];
$date_maj = date("d-m-Y - H:i");
$p_id_stheme=$_POST['id_stheme'];
IF (ISSET ($_POST['AJOUTER']) AND $_POST['AJOUTER']=='Enregistrer' OR ISSET ($_POST['MAJ']) AND $_POST['MAJ']!='') {
WHILE( $i <= $nombre_question ) {
$p_id_question=$_POST['question'][$i];
$p_reponse=$_POST['reponse'][$i];
$p_commentaire=$_POST['commentaire'][$i];
$date_s = date ("Y/m/d");
$test=$_POST['choix_multi[]'];
$choix=implode(';',$test);
IF ($type_questionnaire=='QG') { $table = "resultats_qg"; }
IF ($type_questionnaire=='QL') { $table = "resultats_ql"; }
$req ="INSERT INTO ".$table." (".$names.") VALUES (".$values.")";
mysql_query($req) OR DIE("Impossible de se connecter : " . mysql_error());
$i++;
}
Là ça insére la question mais aucun checkbox. Sachant qu'il faudrai que dans la table resultat, il y ai par exemple
id id_question choix_multi
1 1 1
2 2 1;2
etc.
Voilà je t'avoue j'espère que quelqu'un va trouver car là j'en peux plus et c'est vraiment important.
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Axe971
Messages postés75Date d'inscriptionmardi 20 novembre 2007StatutMembreDernière intervention 9 janvier 20092 11 avril 2008 à 18:12
Salut,
Le implode est bon, je pense que le problème vient du echo il faudrait plutot mettre :
echo "...".$id_choix."......";
Voir mettre carement :
echo "...".$id_choix."......";
et en PHP :
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011 11 avril 2008 à 18:22
J'ai essaiyer exactemetn mais j'ai un message du style :
Warning: implode() [function.implode]: Invalid arguments passed in /home/users/t/tyty/www/sql7/save_questionnaire.php on line 28
Axe971
Messages postés75Date d'inscriptionmardi 20 novembre 2007StatutMembreDernière intervention 9 janvier 20092 11 avril 2008 à 18:27
Euh, si tu as pris exactement le code il y a une erreur. Désolé, il manque le $ de reponses.
$reponses = $_POST['choix_multi_'.$p_id_question.'[]'];
$choix=implode(';', $reponses );
fait un var_dump($_POST); et regarde dans quelle variable se trouve les réponses, Je pense à $_POST['choix_multi_'.$p_id_question].
Les [] ne doivent surement pas etre présents.
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011 11 avril 2008 à 19:25
J'ai fais une redirection car le message d'erreur que j'ai lorsque je ne coche pas n'empêche pas l'insertion.
Donc maintenant l'idéeal est que je n'ai pas cette erreur. Et après que sur une autre page, à partir des résultat, je mette ce forulaire avec les check sur celle qui on été coché et là d'où un problème à venir comme décomposer les 2,3 etc pour permette le check des checkbox.
En tout cas déjà un grand merci vraiment.
cs_eltyty
Messages postés86Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention22 novembre 2011 11 avril 2008 à 19:39
ok c'est bon pourol'erreur par contre j'ai besoin d'un coup de main pour faire en sorte qu'il soit sélectionné par défaut quand j'arrive sur la page.
Je pense qu'il faut utiliser explode mais là... Encore merci car là je te jure si tu étais près de chez moi je te paierai à bouffer et tout.
Donc si ta moyen pour juste ça et ca devrai être bon
Axe971
Messages postés75Date d'inscriptionmardi 20 novembre 2007StatutMembreDernière intervention 9 janvier 20092 12 avril 2008 à 00:28
Salut,
Pas de problème, ça fait toujours plaisir d'aider. Pour ce que tu veux faire l'idée du explode est bonne.
Selon moi, ce qu'il faudrait faire ressemblerait plus ou moins à ça :
$choix = '1,2,3';
$TabChoix = explode($choix, ",");
/* Ensuite pour l'affichage de tes checkbox il faudrait vérifié que la valeur est dans le tableau */
Exemple :
while ($j<5) {
if (in_array($id_choix, $TabChoix)) {
echo "...";
} else {
echo "...";
}
$j++;
}