QCM et PHP : tracking


Le tracking, c'est-à-dire la possibilité d'enregistrer les scores obtenus après évaluation par un logiciel (ici un QCM), correspond à une demande de plus en plus souvent formulée par les formateurs.

La combinaison HTML-JavaScript-CSS (DHTML) ne permet pas d'enregistrer des données sur un serveur car ces langages sont interprétés par le navigateur « côté client ».
On est donc obligé d'utiliser un autre mode de programmation avec le PHP.

Le langage PHP présente en effet des qualités qui nous intéressent ici : J'ai donc modifié le générateur en conséquence...

Lancer le générateur de QCM avec tracking en PHP

Voyons quelques explications illustrées à l'aide de l'exemple utilisé dans la page précédente.

Voir l'exemple avec tracking en PHP

Cet exemple est constitué d'un fichier principal QCMexemp_php.htm, en langage HTML et JavaScript.

La majeure partie du corps (Body) du fichier est un formulaire (Form).
La première ligne du formulaire s'écrit :

<form action="QCMresult.php" method="post" name="quiz" target="popup">

La méthode "post" permet de déclencher l'action d'appel du fichier "QCMresult.php" lorsque l'on appuiera sur le bouton Score situé à la fin du formulaire.

La fin du formulaire comporte les lignes suivantes :

Entrez votre prénom : <input type="text" name="prenom" size="30"> <!--variable $prenom en PHP-->
Entrez votre nom  : <input type="text" name="nom" size="30"><!--variable $nom dans QCMresult.php-->
<input type="hidden" name="exercice" value="Quizz"><!--variable $exercice dans QCMresult.php-->
<input type="submit" value="Score" onClick="getScore(this.form)"><!--bouton Score de type submit-->
<!--C'est lui qui déclenche l'action QCMresult.php. La fonction getScore calcule le résultat-->

<input type="reset" value="RAZ" onClick="getDebut()"><!--fonction qui permet de calculer la durée-->
Score = <input type="text" size="15" name="percentage">--><!--variable $percentage dans QCMresult-->
Durée = <input type="text" size="15" name="duree"><!--variable $duree dans QCMresult.php-->


Ainsi le fichier QCMresult.php va récupérer les variables et les envoyer dans un fichier texte resultats.xls.

Vous avez ci-dessous le code du fichier QCMresult.php :

<html> <head> <title>Résultats</title> </head> <!--en-tête HTML classique-->
<body bgColor='#FFFFA4' text='#970000'>
<?     #on passe en PHP
if ($nom =='' | $prenom =='') { #teste si l'on a indiqué son nom et prénom
echo "<br><div align='center'> <H1>Vous devez entrer votre nom et votre prénom !</H1> </div>";
} else { { # si on a indiqué le nom et le prénom affichage du corps de la page
echo "<div align='center'> <H1>Résultats</H1> </div>" ;
echo "<font size='5'>" ; echo "Merci ",$prenom," ",$nom,"<br><br>";
echo "Votre score est de ",$percentage,"<br><br>";
echo "Vous avez mis ",$duree," secondes","<br><br>";
echo "Ces résultats ont bien été transmis";
$date=date("d/m/Y");{ # récupère la date du serveur
$datafile = "resultats.xls"; #fichier enregistrant les résultats au format texte
$filestr = "$date\t$nom\t$prenom\t$exercice\t$percentage\t$duree\n"; #chaîne d'informations avec tabulation à ajouter au fichier de données
if ($fresults = fopen($datafile, "a")) { #ouvre le fichier en écriture et place le pointeur à la fin
fwrite($fresults,$filestr); #écrit les informations dans le fichier resultats.xls
}
else
echo "Fichier de résultats impossible à ouvrir";
fclose($fresults); #referme le fichier resultats.xls
}
?>     #fin du PHP
</font>
</body> </html>


Attention ! Ce fichier fonctionnera sans problème sur un serveur distant gérant le PHP (serveur Apache).

Pour le tester en local, il vous faudra d'abord installer un serveur Apache en utilisant par exemple le pack gratuit EasyPHP

La récupération des résultats est très simple. L'extension du fichier étant XLS, il suffit d'entrer dans votre navigateur l'URL du site d'hébergement suivi du nom du fichier, resultats.xls. Si vous avez un tableur compatible Excel, il s'ouvrira sans problème.

Vous pouvez également utiliser un fichier PHP qui ouvrira et lira le fichier de résultats
C'est ce que fait mon fichier lire_result.php.

Cliquez pour télécharger lire_result.php et QCMresult.php.

Sommaire