Bonjour,
Je créé actuellement un questionnaire comprenant 2 types de réponses: radio et textarea.
L'utilisateur rempli le questionnaire et clique sur un bouton pour enregistrer les réponses. Ces réponses sont envoyées sur un fichier Excel.
Tout fonctionne à peu près: l'affichage est bon (j'obtiens une page toute bête avec les questions suivies soit d'une zone de texte ou de boutons radio) et lorsqu'on clique sur "Enregistrer", un message de confirmation apparaît bien. Mon souci se situe au niveau de la sauvegarde des données. Je n'ai aucun problème avec les textarea, ça fonctionne. En revanche je n'arrive pas à sauvegarder les réponses radio.
Tout d'abord voici un morceau de code (traitement d'une réponse radio):
XML:
PHP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <ennonce8>8/ Votre établissement est-il labellisé ?</ennonce8> <item type="radio" name="q8" display="cols"> <subitem val="1" name="label">Oui</subitem> <subitem val="2" name="label">Non</subitem> </item>
PHP (traitement des données pour le placement dans le fichier excel)
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 $ennonce8 = utf8_decode($xml->ennonce8); $formula = "<form name='quest' method='post' onsubmit='return verif();' action='".$_SERVER['PHP_SELF']."'>"; $nbrequest = count($xml->item); for($i=0;$i<$nbrequest;$i++){ $subitems=count($xml->item[$i]->subitem); if($xml->item[$i]->attributes()->type == "radio"){ if(utf8_decode($xml->item[$i]->attributes()->name) == "q8"){ $formula.= $ennonce8 ."<br>"; for($j=0;$j<$subitems;$j++){ $formula.= "<input type='radio' name='label' value='".$xml->item[$i]->subitem[$j]->attributes()->val ."'>".utf8_decode($xml->item[$i]->subitem[$j])."<br>"; } } } } $formula.= "<center><input type='hidden' name='action' value='Enr'><input type='submit' value='Enregistrer'><button type='submit' onClick='clickMonBouton();'><img src='css/images/enre.png'></button></td></tr></table></form><center>"; echo $formula;
En ce qui concerne ce "fin.php" qui apparait dans le code, il s'agit de la page de confirmation (avec un message).
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 for($i=0;$i<$nbrequest;$i++){ $subitems=count($xml->item[$i]->subitem); if($xml->item[$i]->attributes()->type == "radio"){ for($j=0;$j<$subitems;$j++){ $formula.= getval($xml->item[$i]->subitem[$j]).";"; } } if($xml->item[$i]->attributes()->type == "textarea"){ $zonet = urldecode(str_replace("%0D%0A","| ",getval($xml->item[$i]->attributes()->name))); $formula.= $zonet.";"; } } $formula .="\n"; $filename2 = "results/DOTC.csv"; $fd2 = fopen($filename2,"a"); fwrite($fd2, $formula); fclose($fd2); header('Location: fin.php'); exit();
Le $formula contient tous les éléments qui seront affichés.
J'ai beau la retourner dans tous les sens, je ne m'en sors pas.
Je vous prie de m'excuser si j'utilise des éléments de langage obsolètes, je n'ai pas pratiqué énormément le CSS.
Je vous remercie d'avance.
Partager