PHP | Quizz
Script crée par jeromecold le 28-06-2009.





Testez vos internautes en leur proposant un petit quizz SANS SQL, très simple à installer, léger mais complet (avec des explications en cas de réponses fausse ...).
Hello world!
Aujourd'hui je vous propose un petit script (qui m'a prit 3 heures à faire
) et dont la particularité c'est que c'est un script à quizz!
Pour faire simple: dans un fichier xml (enfin pas tout à fait), vous programmez vos questions, vos possibilités de réponses et votre réponse (avec correction). Et vous n'avez qu'à lancer le script qui affichera le nombre de questions de votre choix de façon aléatoire!
Voici à quoi doit ressembler une question quand vous la paramétrez:
Code :
<intitule>Question</intitule>
<o1>Réponse 1</o1>
<o2>Réponse 2</o2>
<o3>Réponse 3</o3>
<reponse>Bonne réponse (o1 o2 ou o3)</reponse>
<explic>une explication de la réponse si celle donnée par le joueur est fausse</explic>
Chaque question doit être séparée par la balise <question> (trop dure à devinez

)!
Le fichier de question peut donc être comme ça (celui que je fourni avec le script):
Code : <intitule>Si 1cm = 3 babouins, 17 babouins valent...</intitule>
<o1>4.6 cm</o1>
<o2>5.6 cm</o2>
<o3>6.6 cm</o3>
<reponse>o2</reponse>
<explic>Il suffit de faire un produit en croix: 17*1/3=~5.6cm</explic>
<question>
<intitule>Quelle est l'énergie du soleil?</intitule>
<o1>L'hydogène</o1>
<o2>L'oxygène</o2>
<o3>Le carbon</o3>
<reponse>o1</reponse>
<explic>C'est l'Hydrogène qui est l'énergie du soleil.</explic>
<question>
<intitule>La respiration est une action...</intitule>
<o1>Automatique</o1>
<o2>Inconsciemment exécutée</o2>
<o3>Automatique et modérable</o3>
<reponse>o3</reponse>
<explic>Quand on respire on ne se dit pas "j'inspire, j'expire, j'inspire" en permanence, c'est donc une action automatique. En revanche, on peut très bien se dire "j'arrête" et arrêter, l'action est en plus modérable.</explic>
<question>
<intitule>Une cellule peut être?</intitule>
<o1>Un être vivant</o1>
<o2>Un oeuf</o2>
<o3>Un atome</o3>
<reponse>o1</reponse>
<explic>Une cellule est composée d'atomes et est composant des êtres vivants!</explic>
Ici, il y a 4 questions.
Sinon, voici le script:
Script PHP :
<?php
session_start();
$questionnaire = "quizz.jqz"; $questions = addslashes(file_get_contents($questionnaire)); $questions = explode("<question>", $questions); if(!isset($_GET['reponses'])) {
echo '<form method="post" action="?reponses"><!-- Début du quizz Jeromecold -->';
$nombre_question = 2; $nombre_total_ques = count($questions); $nombre_total_ques = $nombre_total_ques - 1;
$nombre = 0;
$_SESSION['questions'] = NULL;
while($nombre != $nombre_question) {
$question_hasard = mt_rand(0, $nombre_total_ques);
if(!preg_match('#/' . $question_hasard . '#', $_SESSION['questions'])) {
$nombre++;
$_SESSION['questions'] = $_SESSION['questions'] . "/" . $question_hasard;
$tableau = array();
eregi("<intitule>(.+)</intitule>", $questions[$question_hasard], $tableau);
echo "<b>Question n°" . $nombre . ":</b> " . stripslashes($tableau[1]) . "<br />";
$bonne_reponse = array();
eregi("<reponse>(.+)</reponse>",$questions[$question_hasard], $bonne_reponse);
$nom1 = $question_hasard;
$nom2 = $question_hasard;
$nom3 = $question_hasard;
if("o1" == $bonne_reponse[1]) {
$nom1 = "o-" . $question_hasard;
} elseif("o2" == $bonne_reponse[1]) {
$nom2 = "o-" . $question_hasard;
} elseif("o3" == $bonne_reponse[1]) {
$nom3 = "o-" . $question_hasard;
}
$reponse1 = array();
eregi("<o1>(.+)</o1>", $questions[$question_hasard], $reponse1);
echo '<input type="radio" name="' . $question_hasard . '" value="'. $nom1 .'"> ' . stripslashes($reponse1[1]);
$reponse2 = array();
eregi("<o2>(.+)</o2>", $questions[$question_hasard], $reponse2);
echo '<br /><input type="radio" name="' . $question_hasard . '" value="'. $nom2 .'"> ' . stripslashes($reponse2[1]);
$reponse3 = array();
eregi("<o3>(.+)</o3>", $questions[$question_hasard], $reponse3);
echo '<br /><input type="radio" name="' . $question_hasard . '" value="'. $nom3 .'"> ' . stripslashes($reponse3[1]) . '<br /><br />';
}
}
echo '<input type="submit" value="Valider" /></form>';
} else {
echo '<b>Correction:</b><br />';
$liste_ques = explode('/', $_SESSION['questions']);
$nombre2 = count($liste_ques);
$nombre3 = 1;
$note = 0;
$note_tt = 0;
while($nombre2 != $nombre3) {
$ques_cours = $liste_ques[$nombre3];
if(preg_match('#o-#', $_POST[$ques_cours])) {
$note++;
echo '<b>Question ' . $nombre3 . '</b>: Bonne réponse!<br />';
} elseif(!preg_match('#o-#', $_POST[$liste_ques[$nombre3]])) {
echo '<b>Question ' . $nombre3 . '</b>: Mauvaise réponse!<br />';
$obtenu = array();
$tableau = eregi("<explic>(.+)</explic>", $questions[$ques_cours], $obtenu);
echo stripslashes($obtenu[1]) . "<br /><br />";
}
$nombre3++;
$note_tt++;
}
echo "<br /><b>Note:</b> " . $note . "/" . $note_tt;
}
?>
Vous n'avez qu'a modifier le nombre de questions à afficher, c'est la variable $nombre_question et éventuellement le fichier de questions (si vous ne modifiez pas celui que je vous fourni).
Voilà pour les grands traits, amusez-vous bien!
rar de quelques ko :
lien
Pour générer facilement vos fichiers de quizz (pas sous IE sorry):
http://lesite.jeromecold.fr.nf/quizz.php
Poster un commentaire
Commentaires
*Vous devez être connecté pour pouvoir soumettre un script
Si vous n'êtes toujours pas inscrit, cliquez ici !