Voir aussi
Dans la même rubrique :
Quiz en PHP 2/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Installer un script PHP pour les nuls
Page contact en PHP 1/3
Page contact en PHP 2/3
Menu de navigation sans JavaScript
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBB
Page Erreur 404 en PHPDu même auteur :
Suivi de vos articles
Exécuter un Javascript dans une page SPIP
Reprendre un document Word
Les Centres de santé
Quiz en PHP 1/3
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Accueil du nouveau rédacteur
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Astuce pour les images fréquemment utilisées
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Editer plusieurs fichiers de syndication 2/3
La Netiquette des forums
Etablir un questionnaire statistique en ligne
Publication Spip : forme et typographie
Initiation au xhtml - 2
Positionnement fixe... même avec Internet Explorer !
Le web structuré et sa présentation
Webmasters : Comment mieux se référencer ?
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Contrôler l’accès d’une partie du site avec .htaccess
Un serveur dédié pour les nuls
Un Editeur RSS pour votre site 2/2
Menu de navigation sans JavaScript
Quiz en PHP 3/3
Page contact en PHP 1/3
Editer plusieurs fichiers de syndication 3/3
xhtml - 4 : Les entités
Un Editeur RSS pour votre site 1/2
Comment faire migrer son site ?
Soigner en ligne, un art impossible ?
Conseils pour débuter un site web
Editer plusieurs fichiers de syndication 1/3
Initiation au xhtml - 1
Réaliser un formulaire de contact (4/4)
Réaliser un formulaire de contact (3/4)
Page Erreur 404 en PHP
Belles icônes pas chères !
Gestion d’une rubrique... en attendant SPIP
Réaliser un formulaire de contact (1/4)
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Quiz en PHP 2/3
Réaliser un formulaire de contact (2/4)
Un lecteur RSS pour votre site 1/2
Analyser les réponses à une liste de questions
Proposer plusieurs styles pour votre site
Créer un forum à l’aide de phpBB
Quand JavaScript est désactivé... 2/2
Quand JavaScript est désactivé... 1/2
Page contact en PHP 3/3
Menu dépliant pour les rubriques
Utilisation de la classe easyRSS
Créer une liste de QCM
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Un lecteur RSS pour votre site 2/2
Réaliser un formulaire de contact (5/4)
Syndication, comment s’y retrouver
Page contact en PHP 2/3
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Tri et Histogramme
Installer un script PHP pour les nuls
Javascript : n’oubliez pas Mac OS !
Comment intégrer Snap Shots à Rapidweaver ?
La syndication de contenu RSS
Lire nos fichiers de syndication
Ecrire ce qu’on veut dans SPIP
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Exécuter un Javascript dans une page SPIP
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Quiz en PHP 3/3
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 2/3
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 3/3
Editer plusieurs fichiers de syndication 2/3
Menu dépliant pour les rubriques
Gestion d’une rubrique... en attendant SPIP
Installer un script PHP pour les nuls
Menu de navigation sans JavaScript
Page contact en PHP 1/3
Quiz en PHP 2/3
Positionnement fixe... même avec Internet Explorer !
Quand JavaScript est désactivé... 2/2
Proposer plusieurs styles pour votre site
Quand JavaScript est désactivé... 1/2
Syndication, comment s’y retrouver
Page Erreur 404 en PHP
Page contact en PHP 3/3
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Conseils aux rédacteurs
Lire nos fichiers de syndication
Ecrire ce qu’on veut dans SPIP
Présentation de l’espace rédacteurs
Astuce pour les images fréquemment utilisées
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 1/3
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Reprendre un document Word
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Joindre un document à un article
Editez vos flux avec Fil_LE 1/2
Joindre un logo à un article
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Scripts PHP
Quiz en PHP 1/3

Après avoir longtemps utilisé pour des quiz une adaptation du Javascript réalisé par le Dr Joël Lemontagner (voir exemple), j’ai cherché une solution en PHP afin que le script s’exécute côté serveur (ceci permet le fonctionnement même si on a déconnecté Javascript pour son navigateur ou si on utilise un navigateur texte). Ce script compte les bonnes réponses et donne la correction du quiz.
Ce script peut être testé ici : quiz, le code de l’ensemble du script peut être vu et copié ici : [2].
Le script d’origine est modifié pour la présentation et surtout par l’ajout de commentaires après chaque réponse. Ce script est très simple à mettre en Å“uvre, il ne nécessite pas de base MySQL.
Quelques explications sur le code :
<?php |
Voici le tableau contenant les questions (limitées à 4 pour cet exemple), les propositions de réponse, l’avant dernier chiffre indiquant quelle est la bonne réponse et le dernier élément le commentaire qui sera affiché avec la correction. On peut mettre le nombre de questions et le nombre de propositions de réponse que l’on veut. J’ai numéroté les questions, ce qui n’a rien d’obligatoire. J’ai mis une variable $nsp= "Je ne sais pas"; pour simplifier l’éciture, en fait cette proposition n’est pas indispensable puisque le script accepte de donner les réponses même si on n’a pas répondu.
include("quizz.inc.php"); |
J’ai préféré mettre le script dans un fichier externe car je l’utilise pour plusieurs quizz [3]. Voyons son contenu [4] :
<?php |
Ouverture du formulaire ; comme la page va s’appeler elle-même, on récupère le nom de la page du quizz.
for ($i=0; $i<count($quizz); $i++) { |
Affichage des questions (ici les questions seront en gras et en orange) et des propositions de réponses avec des boutons radios. Une ligne horizontale sépare chaque question.
print "<input type='hidden' name='result' value='voir' /><br />\n<center>"; |
Affichage du bouton d’envoi du formulaire pour voir les résultats et la correction du quizz.
else { |
Affichage du sous-titre "Résultats du quizz", mise à 0 du compte des points.
for($i=0; $i<count($quizz); $i++) { |
Le script vérifie la bonne réponse et retourne le résultat pour chaque question. $points++; permet de compter le nombre de bonnes réponses.
$commentaire=$quizz[$i][count($quizz[$i])-1]; // dernière valeur du tableau |
Le commentaire est affiché pour chaque question. Une ligne horizontale sépare chaque question.
if($points==count($quizz)) { |
Si le nombre de points obtenu est égal au nombre de questions, alors le message "Félicitations vous avez tout juste !" s’affiche.
else { |
Sinon le nombre de bonnes réponses s’inscrit, avec un "s" à "bonne" et à "réponse" si on en obtient au moins 2.
D’autres articles présentent des variantes de ce script :
Quiz en PHP 2/3 avec un ordre aléatoire des questions,
Quiz en PHP 3/3 avec un ordre aléatoire des réponses proposées, éventuellement aussi des questions.
[1] Bien sûr, pour que ce script fonctionne il faut le mettre sur une page avec l’extension .php ou .php3, elle-même placée sur un serveur interprétant le PHP. Attention, ce script n’est pas fait pour fonctionner avec easyPHP pour cela, il faudrait modifier les variables transmisses en mode POST (remplacer $var par $_POST[’var’]), en fait c’est plus simple de l’installer d’emblée sur un serveur. Ce script a été mis au point pour le site cyes.info ; la page choix techniques présente aux webmestres les différentes techniques mises en Å“uvre pour ce site. Cet article publié en janvier 2004 a été modifié en août 2004 (avec un rendu du script identique, mais un code mieux lisible, puis le 21/05/05 et le 3/04/06 pour mettre en garde contre l’utilisation du script avec easyPHP à l’origine de nombreux messages, le 26/04/06 et le 01/05/06 pour présenter des variantes du script, et le 30/05/06. Le code a encore été modifié le 15/12/07 en remplaçant $result par $_POST[result] et $$nom par $_POST[$i].
[2] Code du fichier questions.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
Code du fichier quizz.inc.php :
|
[3] Pour des raisons de securite, il ne faut jamais appeler un fichier include avec une autre extension que .php, sinon n’importe quel utilisateur peut voir le code de votre script (puisque les .inc ne sont pas interprétés par le serveur). Bien qu’ici cela n’ait pas vraiment d’importance, cela reste une règle de base quand on développe des scripts plus sensibles (Merci à Lacrampe pour cette contribution).
[4] Cet article a été modifié le 21/05/2005 en remplaçant $PHP_SELF par $_SERVER[PHP_SELF] afin d’éviter des problèmes avec EasyPHP qui ne reconnait pas la variable $PHP_SELF.
Bonjour,
Pourriez-vous me dire s’il (ou plutôt comment il) est possible de modifier votre script pour avoir des réponses avec des valeurs (en points) différentes et que le résultat soit la somme de ces points (style en médecine le Fagerstrom)
Merci
PS : pas trop compliqué svp - je débute en php - merci
Il faut créer dans le <head> de la page un style justifié, par exemple :
<style type="text/css"> |
Puis on remplace dans quizz.inc.php la ligne :
print "<br />".$commentaire."<br />\n"; |
par :
print '<br /><span class="just">'.$commentaire."</span><br />\n"; |
Bonjour,
Je vous remercie pour votre script très simple et très pratique. Je souhaitai avoir votre avis sur les deux questions suivantes :
est-il possible : de créer un fichier "s’enregistrer" , avec NOM et ADRESSE e-mail , qui sera gardé en mémoire avec le résultat obtenu , à l’ouverture du "quizz" , que l’on puisse afficher ( lien sur le site . . .==> RESULTATS ) également transmettre le résultat par e-mail à plusieurs adresses ( personnes ).
En vous remerciant d’avance
Très cordialement
Martial
Tout est possible... mais ce que vous souhaitez ne correspond pas à ce script que j’ai souhaité simple et sans base de données.
Pour des enregistrements, il vaut mieux concevoir un autre script interfacé avec une base de données. Par contre le script peut être modifié en ajoutant la fonction mail() si on veut envoyer le résultat par e-mail à plusieurs adresses.
Bonjour,
Je vous remercie pour votre script très simple et très pratique.
Je souhaitai avoir votre avis sur les deux questions suivantes :
est-il possible d’afficher un texte en fonction du résultat obtenu au quizz (par ex entre 0 et 4 points : "vous devez faire des progrès" ; entre 5 et 10 "peut mieux faire"...) ?
est-il possible d’envoyer le résultat du quizz par e-mail à une adresse donnée par la personne qui fait le quizz ?
En vous remerciant d’avance
Très cordialement
Renaud
1) Le message à adapter en fonction des résultats est facile à régler, il suffit d’adapter dans quizz.inc.php :
if ($points==count($quizz)) { |
à ce que vous voulez obtenir.
2) L’envoi d’un mail se fait par la fonction mail() la page mail() donne des exemples.
Pour ajouter ce service, il faut mettre "Pour recevoir vos résultats, indiquez votre e-mail :" suivi d’un champ de saisie et de fonctions de contrôle pour que ce champ ne serve pas à pirater votre site. Vous trouverez cela dans Page contact en PHP 1/3.
Pour le message lui-même, il faut reprendre les informations souhaitées et les mettre dans une variable (par exemple $Message) qui sera envoyée par mail.
Bonjour ! Est il possible de recevoir une copie du corrigé ? Le probleme c est que le corrigé n est pas ’en dur’, donc difficile de simplement lui dire d envoyer une donnée comme nom/prenom sur l exemple donné sur ’contact’ Des suggestions sur un joli code ? :)
En passant, le site est vraiment super !
Bonjour
Je voudrais qu’il y ait des images (un crochet à côté des bonnes réponses et un x à côté des mauvaises). Ce serait plus facile de voir, tout de suite au premier coup d’oeil, qu’elles sont les mauvaises réponses et ce serait, esthétiquement parlant, plus beau.
Merci pour ce script.
C’est possible, il faut modifier le code de quizz.inc.php en ajoutant au début de la ligne print "Votre réponse <b><i>".$bonne."</i></b> est exacte."; le code HTML de l’image à afficher pour les bonnes réponses.
De même, au début de la ligne print "La bonne réponse est <b>".$bonne."</b> mais vous "; on peut ajouter le code pour l’image correspondant aux mauvaises réponses.
Bonsoir à tous, je suis encore un amateur en php mais je m’en sort en html, cependant je ne parvient pas comme indiqué plus haut a afficher une image de validation de bonne reponse ou une croix rouge pour une mauvaise reponse !
Merci de m’aider svp
Il faut ajouter la description des images au début du fichier quizz.inc.php (à adapter en fonction de vos images et de leur emplacement) :
$bon = '<img src="bon.gif" />'; |
puis ajouter l’image correspondante à $affichage_php (lignes 29 et 33), par exemple pour la ligne 29 :
$affichage_php = $bon.'Votre réponse <b>" '.$bonne.' "</b> est exacte.'; |
Bonjour est-il possible d’afficher les phrases "Vous avez X bonne réponse sur 4 questions." ou "Félicitations vous avez tout juste !" en haut de la page (juste en dessous de "Résultats du quizz") ?
Merci !
C’est possible, mais il faut respecter que le calcul précède l’impression pour avoir un résultat valable. Il faut pour cela modifier la fin du code du fichier quizz.inc.php :
else { |
Les éléments de réponses sont mis dans la variable $reponses et écrits après le total des résultats.
Bonjour
ce script permet il de gérer des questions à multi réponses ?
Ce script permet d’avoir plusieurs propositions, mais une seule devra être choisie (la bonne réponse ou la mauvaise selon le type de question).
Il n’est pas possible avec ce script de gérer une liste de propositions parmi lesquelles on retient plusieurs propositions. J’y pense, mais c’est beaucoup plus lourd à gérer.
$result par $_POST[result] cela devrait regler ce probleme.
Salut. Je suis un illettré du PHP et l’aspect copier-coller de votre script était séduisant. Malheureusement, vous n’expliquez pas comment les deux parties s’emboîtent dans la page .htm (il semble être écrit en tout petits caractères qu’il ne faut pas l’appeler .htm, d’ailleurs)
Bref : comment fait-on marcher ce bidule ?
Evidemment pour que cela marche, il faut faire ce qui est dit dans l’article :
créer une page au look de votre site dans laquelle vous placez le code du script (les questions et les réponses) ; pour suivre l’exemple donné, vous appelez cette page questions.php
mettre au même niveau de votre site le fichier nommé quizz.inc contenant l’autre partie du code (le script de traitement).
Bien sûr, pour que cela marche, ces pages doivent être placées sur un serveur interprétant le PHP. Les pages ne peuvent pas fonctionner avec une extension .htm
Voici une proposition à essayer, vous remplacez dans le code :
"Intitulé de la question" par :
"Intitulé de la question <a href='http://locweb.free.fr/ski1900a1930.htm' target='_blank'>Pour vous aider</a>"