Rapport : questionnaire HTML et traitement PHP.


Pour cet exercice, j'ai choisi d'utiliser mon activité favorite : la spéléo ! Le but était de mesurer la connaissance du sujet en posant des questions sur différents domaines (technique, géologie, histoire, matériel), le tout illustré avec quelques dessins et photos bien choisis. Pour me roder à l'exercice, j'ai utilisé dans le formulaire à peu près tout les types d'entrées possibles : texte, boutons radio, cases à cocher, listes déroulantes. Pour le traitement des données, plusieurs éléments ont été pris en compte :

Un peu de technique...

Calcul du score et détermination des feedback.

Dans le cas des boutons radio et des listes déroulantes, j'ai défini une variable réponse pour chaque interaction qui prenait une valeur de "a" à "d" (généralement) suivant la réponse de l'utilisateur. On fait ensuite un test sur cette variable à l'aide de la fonction SWITCH, beaucoup plus pratique et lisible qu'une longue suite de conditions (IF). On attribue alors dans chaque cas une chaine de caractères feedback différente. Il faut donc également définir une variable feedback pour chaque question. Quand on est sur la réponse juste, on attribue en plus un point supplémentaire à la variable score. Si l'utilisateur n'a pas répondu (variable réponse vide), le cas "défaut" lui apporte un feedback spécifique (vous n'avez pas répondu. La bonne réponse était...)

Pour les cases à cocher, le problème est un peu différent. En effet, comme l'utilisateur peut cocher plusieurs cases, on ne peut pas déterminer une seule variable et faire un test de type SWITCH. Il faut créer une variable par case (6 dans mon cas) qui prendront la valeur 0 ou 1 (true/false, cochée/pas cochée). Il faut alors faire un test sur chaque variable pour déterminer s'il faut donner le feedback correspondant et utiliser la fonction de concaténation de chaine de caractère (.) pour pouvoir avoir les feedbacks des 2 réponses dans la même variable. Au passage, on attribue bien sur 1 point de score pour chaque réponse juste.
Mais ce n'est pas fini, car le feedback doit comporter les réponses justes. Il faut alors faire un autre test booléen comprenant les deux variables des réponses justes (si reponse1 et reponse2 alors ne donne pas les reponses - si reponse1 seulement alors donne reponse2 - etc...). L'ultime test consiste à verifier que l'utilisateur a effectivement repondu pour lui attribuer un feedback specifique dans le cas contraire. (si pas reponse1 ni reponse2 ni reponse3 ... alors utlisateur pas repondu)

récupération des pseudos et des scores.

la principale difficulté réside dans le fait que le serveur web doit pouvoir écrire dans le fichier qui va récupérer les résultats, ce qui n'est pas le cas dans un répertoire personnel. Pour régler ce problème, j'ai créé un fichier vide dans un répertoire "results". Ensuite, j'ai donné les droits d'écriture et de lecture de ce fichier à "tout le monde" avec la commande Unix chmod (chmod 007 filename). Je ne sais pas si c'est la meilleure solution, mais c'est la seule que j'ai trouvé !
questionnaire spéléo retour page travaux