Créer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
QuizzQuizz

PHP | Quizz

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

SocialTwist Tell-a-Friend

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 ...).

Télécharger

quizz.rar

Script de Quizz (questions, réponses, explications ...)
Taille : 2 Ko   Vous devez être inscrit et logué pour télécharger

                  

Hello world!

Aujourd'hui je vous propose un petit script (qui m'a prit 3 heures à faire :-x ) 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 :p )!

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
/*
Script par Jeromecold (http://jeromecold.fr.nf)
Redistribution interdite!
-----------------------------------------------
*/
session_start();
$questionnaire = "quizz.jqz"; // Questionnaire à charger au format jqz
$questions = addslashes(file_get_contents($questionnaire)); // On lit le formulaire
$questions = explode("<question>", $questions); // On en fait une list
if(!isset($_GET['reponses'])) {
echo '<form method="post" action="?reponses"><!-- Début du quizz Jeromecold -->';
$nombre_question = 2; // Nombre de questions à afficher
$nombre_total_ques = count($questions); // On cherche le nombre de 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;
        // On convertie en xHTML
        $tableau = array();
        // la qquestions
        eregi("<intitule>(.+)</intitule>", $questions[$question_hasard], $tableau);
        echo "<b>Question n°" . $nombre . ":</b> " . stripslashes($tableau[1]) . "<br />";
        // La bonne réponse
        $bonne_reponse = array();
        eregi("<reponse>(.+)</reponse>",$questions[$question_hasard], $bonne_reponse);
        // les réponses!
        // On crée les noms des inputs
            $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;
        }
        // On inscrit les réponses
        $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

Commentaire :

*Vous devez être connecté pour pouvoir poster un commentaire
Si vous n'êtes toujours pas inscrit, cliquez ici !

Commentaires

De toute façon, ce qui est utile, c'est la syntaxe qu'il y a là. Si vous voulez mettre un </question> pou encore une en-tête, le script n'y verra rien!

jeromecold

Bah actuellement c'est presque du XML, c'est juste que qu'il n'y a pas d'objet question mais un séparateur <question> à la place.



______________________________________________________________________________________________________________________________________ ...

NestorCastor

Tout simplement car le XML est un format polivalent du Web et qu'il n'est pas très recommandé de ne pas coder dans les normes internationales. Certes ça marche, mais si tout le monde code à ça manière, personne ne s'y retrouve ^^.
Non, mais c'est un détail ! Sinon c'est très bien.

Cclleemm

Ah merci pour ta réponse Cclleemm! Je vois pas quoi ajouter si ce n'est que pour le XML, j'aime pas tellement ça, ici sa aurait bêtement alourdi le fichier, mais bien sûr, on peut convertir le fichier de questions en xml, sans soucis même vu que sa a été la base de mon travail!

jeromecold

Superbe ! Je n'avais même pas vu ce topic ! Et oui tellement occupé :(
Super ! moi j'aime bien le fonctionnement et la façon que tu stocke les questions. P
Même si j'aurais préféré en XML ! Bon c'est déjà mieux que en SQL !
J'ai vu le générateur sur ton site pour les fainéants < ...

Cclleemm

'Content que sa te plaise Loulou!

jeromecold

Whaa ! C'est super bien ! Et en plus, je cherchais comment en faire un...
Merci !

Zeepix

Soumettre un script PHP

*Vous devez être connecté pour pouvoir soumettre un script
Si vous n'êtes toujours pas inscrit, cliquez ici !