Staf14 ex2 formulaire php (rapport)


Objectifs

  • Apprentissage de PHP :
    Mon premier objectif était bien évidemment d'apprendre les bases du langage php, contrairement aux formulaires que je connais déjà bien. Il faut dire que cela tombe bien puisque je suis en train de développer en parallèle un projet php / mysql pour mon site. Je ne connaissais pas du tout ce langage avant de faire cet exercice, mais je désirais absolument savoir comment php pouvait gérer une interaction avec un utilisateur.

  • Indépendance :
    Un autre de mes buts était de créer le code d'analyse du résultat, tout seul, sans avoir recours à une aide extérieure. En conséquence, mon code n'est peut-être pas "redoutable" mais il a le mérite d'être personnel. Il est également évident que je ne me suis pas lancé dans des calculs trop compliqués, que je n'aurais pas réussis à programmer correctement.

  • Utilité :
    Enfin, je souhaitais vivement que cet exercice puis servir à quelque chose, ceci afin de me stimuler et de ne pas travailler pour rien. J'ai donc décidé qu'il s'incluerait au sein du projet pour Staf15. C'est en surfant sur la toile que je suis tombé sur un formulaire fonctionnant avec php (d'après l'url...). Je me suis dit qu'il figurerait bien dans notre projet et que ce serait un bon exercice de tenter, à partir des questions, de le faire fonctionner en recréant un code moi-même. Ce questionnaire est destiné à des enfants désirant connaître l'état de leurs connaissances au sujet de l'électricité. Les couleurs du questionnaire (fond, police, etc.) respectent les couleurs du projet.
    Je tiens à préciser qu'avant de me lancer dans cet exercice, j'ai pris soin de demander à M. SCHNEIDER si je pouvais reprendre le questionnaire trouvé sur le web. Je lui ai expliqué qu'il n'était pas intéressant pour moi d'apprendre à construire des formulaires, puisque cela fait bientôt trois ans que je m'y attelle et que je voulais me concentrer sur le code php. En accord avec lui, je n'ai donc pas travaillé à créer le qcm, et l'exercice a donc porté uniquement sur la création du code php. Ce choix a aussi comme conséquence le respect du questionnaire choisi, c'est à dire que je n'ai pas cherché à modifier la manière dont il a été construit (j'ai simplement réécrit le tout de manière plus simple).

Implémentation

  • Fichiers :
    J'ai préféré faire deux fichiers, l'un contenant le questionnaire, l'autre le code php permettant de faire le calcul du résultat. J'avoue ne pas avoir encore bien saisi comment indiquer au code les différentes "étapes" si formulaire et code sont inclus dans le même fichier. Le formulaire contient toutes les possibilités d'interactions (checkbox, boutons radios, menu select, texte), pour pouvoir comprendre comment les traiter avec php. Il m'a semblé judicieux dans le feed-back de fournir la question, la réponse donnée et la réponse attendue. Ainsi, l'apprenant peut facilement comprendre ce qu'il n'a pas réussi sans retourner au formulaire précédent. J'ai également porté une grande attention au code php, en essayant de le rendre le plus lisible possible, avec des sous-titre avant chaque action. Cela fut utile pour m'y retrouver.

Difficultés rencontrées

  • Propreté et ergonomie :
    J'ai également veillé au bon fonctionnement du formulaire et du script php, par souci de propreté. J'ai donc passé beaucoup de temps à peaufiner certains détails. Je me suis par exemple rendu compte qu'il n'était pas judicieux de coder les accents au sein du code php. En effet, en codant le mot "éclair", il ne m'était plus possible d'entrer le mot avec accent dans le formulaire... cette petite erreur m'a coûté de longues minutes...

  • Les checkboxes :
    Pour la question 7, j'ai été confronté à un problème intéressant. Pour extraire les réponses possibles (il peut y en avoir jusqu'à 8), j'ai décidé de faire comme il est écrit dans le polycopié, c'est à dire une boucle (for). Cela marchait très bien. Le problème est survenu au moment où j'ai désiré effectuer un comptage des bonnes réponses à partir de cette liste. Si je disais "if choice[2] est choisi, alors totalise un point... cela ne marchait pas, tout simplement parce que M. php prenait l'item en deuxième position dans la liste de résultats issus de la boucle et non dans l'énoncé... comme il m'est impossible de savoir par avance quelle va être cette liste, il m'a fallu laisser tomber cette méthode et passer par l'autre, décrite comme étant plus moche... mais efficace dans mon cas! Cela met en évidence le problème principal que j'ai eu. Avec une variable, il me fallait à chaque fois effectuer deux calculs: l'un pour donner le feed-back de la réponse (la réponse donnée apparaît dans le feed-back) et l'autre pour totaliser des points. Or, si je mettais des phrases comme valeurs aux variables, il me fallait ensuite un petit bout de code pour retransformer ces valeurs en chiffres pour effectuer le calcul, et réciproquement. Peut-être existe-t-il une méthode plus simple?

  • Pourcentage :
    Pour des questions visuelles et aussi parce que je suis un peu maniaque, il me serait utile de savoir comment arrondir le pourcentage des réponses totales justes après deux chiffres après la virgule...

Réflexions et références

  • PHP et programmation :
    Pour la première fois, j'ai eu la chance de me lancer dans de la programmation. J'ai été surpris par l'intérêt que cette démarche a suscité en moi. Je pense néanmoins que si j'étais autant passionné, cela tient en grande partie au fait que j'ai besoin d'apprendre le php pour mon site personnel. Quand on est motivé...

  • Formulaire original :
    Vous pouvez retrouver le formulaire que j'ai repris pour réaliser le mien, à cette adresse

  • Références :
    Je me suis appuyé principalement sur les polycopiés distribués durant le cours sur php ainsi que sur les codes d'anciens étudiants, mais ils ne correspondaient pas vraiment à ce que je voulais...


© D. TOUVET (2001.01.02/2001.01.06) Homepage/Etudes/Tecfa/Staf14/ex2/Formulaire PHP, rapport