Voici une application de gestion de sondages,
qui permet de présenter une question et un certain nombre de
réponses possibles au visiteur, et lorsque celui-ci a sélectionné
une réponse, d'afficher une mise à jour des statistiques
des réponses. Notre script présente le minimum pour
ce type d'application PHP (il manque par exemple un système
permettant d'éviter qu'un visiteur puisse voter plusieurs fois),
mais nous permet d'aborder certains points intéressants, comme
la sérialisation des données ou l'utilisation de fichiers
pour leur stockage.
Présentation
Notre sondage se résume donc à deux interfaces : un
formulaire présentant le QCM, et les statistiques. Voici
leurs aspects HTML :
Que
se passe-t-il ?
0% : Je ne sais pas. (0 vote(s) )
0% : Je ne vous le dirais pas. (0 vote(s) )
100% : Bon sang! (1 vote(s) )
Nombre de votes : 1. |
Voici la construction du formulaire :
<form name="formulaire"
method="get" action="<?=$_SERVER['PHP_SELF'];?>">
<b>Que se passe-t-il ?</b><br>
<input type="radio" name="choix" value="0">Je ne
sais pas.<br>
<input type="radio" name="choix" value="1">Je ne
vous le dirais pas.<br>
<input type="radio" name="choix" value="2">Bon sang!<br>
</form>
Notre formulaire ne comprend sciemment
pas de bouton de validation : le formulaire est automatiquement
envoyé lorsque l'utilisateur sélectionne un des boutons-radio.
Pour ce faire, nous faisons appel à JavaScript, en appliquant
à chaque occurrence de bouton un appel précis :
<input type="radio"
name="choix" value="0" onClick="document.formulaire.submit();">Je
ne sais pas.<br>
Pour s'assurer que
le formulaire est correctement validé, nous introduisons
un champ invisible dans celui-ci, que nous testerons par la suite
:
<input type="hidden"
name="vote-fait" value="ok">
Le coeur du
sondage
Nous devons décider comme gérer nos données.
Parce que nous voulons pouvoir facilement changer de sondage, il
faut absolument éviter d'écrire ses éléments
"en dur" dans le code HTML. Nous allons ici les enregistrer
dans un tableau $vote[], qui contiendra
à la fois la question, les réponses possibles, et
le nombre de votes pour chaque question.
Ecrit en PHP, notre tableau prendra cette forme :
$vote['question']
= "Que se passe-t-il ?";
$vote['reponse'][0] = "Je ne sais pas.";
$vote['reponse'][1] = "Je ne vous le dirais pas.";
$vote['reponse'][2] = "Bon sang!";
$vote['vote'][0] = "0";
$vote['vote'][2] = "0";
$vote['vote'][2] = "0";
De cette manière, nous pourrons
facilement nous déplacer au sein de notre tableau. Notez
que les chiffres (en gras) peuvent être omis, PHP se chargeant
d'assigner une position au fur et à mesure que le tableau
est rempli. Cela facilite d'autant plus l'ajout d'autres réponses...
Ensuite, nous voulons stocker ces données.
Que ce soit dans un fichier ou dans une base de données,
le problème est le même : il est hors de question d'écrire
le morceau de code "constructeur" de notre tableau, ci-dessus,
directement dans le fichier externe. Nous ferons ici appel à
la sérialisation, un processus permettant de convertir
des variables en chaînes de caractère. Les données
deviennent ainsi faciles à stocker, ou à transférer
au travers du réseau. PHP propose donc la fonction serialize()
pour ici transformer notre tableau multidimensionnel en chaîne,
et unserialize() pour faire la transformation
inverse.
La sérialisation nous servira donc à chaque fois que
nous lirons ou écrirons nos données dans notre fichier...
Page 1 | 2
| 3
|