[phpBB Debug] PHP Notice: in file /viewtopic.php on line 943: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
[phpBB Debug] PHP Notice: in file /viewtopic.php on line 943: getdate(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.
FORUM Webmaster • Quizz
Crer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
ForumsQuizz
      Imprimer le sujet FAQ  M'enregistrer 
  Dynamisez facilement votre site internet grace à notre gamme de scripts PHP de toutes sortes créé par nos amis Plug'ziens pour satisfaire vos besoins

Quizz

Messagede jeromecold le 28 Juin 2009, 17:45

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: Tout sélectionner
    <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: Tout sélectionner
    <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:

Code: Tout sélectionner
<?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
Fichiers joints
quizz.rar
Script de Quizz (questions, réponses, explications ...)
(1.92 Ko) Téléchargé 788 fois
Arobase plus
Avatar de l'utilisateur
jeromecold
Plug'zien Pro
Plug'zien Pro
 
Messages: 3156
Inscription: 05 Sep 2007, 13:18
Points: 2915


Re: Quizz

Messagede Zeepix le 28 Juin 2009, 20:30

Whaa ! :bravo: C'est super bien ! ;-) Et en plus, je cherchais comment en faire un...
Merci !
Avatar de l'utilisateur
Zeepix
Plug'zien Star'z
Plug'zien Star'z
 
Messages: 650
Inscription: 29 Fév 2008, 20:30
Localisation: En france
Points: 3270


Re: Quizz

Messagede jeromecold le 29 Juin 2009, 07:32

'Content que sa te plaise Loulou!
Arobase plus
Avatar de l'utilisateur
jeromecold
Plug'zien Pro
Plug'zien Pro
 
Messages: 3156
Inscription: 05 Sep 2007, 13:18
Points: 2915


Re: Quizz

Messagede Cclleemm le 29 Juin 2009, 18:45

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 :lol:

Bon travail, je valide ça sans hésiter !
http://www.monsitegratuit.com/scripts/s ... ?source=27
Image
Avatar de l'utilisateur
Cclleemm
Admin'z
Admin'z
 
Messages: 2766
Inscription: 14 Mar 2007, 16:21
Localisation: Savoie
Points: 2012


Re: Quizz

Messagede jeromecold le 29 Juin 2009, 19:28

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!
Arobase plus
Avatar de l'utilisateur
jeromecold
Plug'zien Pro
Plug'zien Pro
 
Messages: 3156
Inscription: 05 Sep 2007, 13:18
Points: 2915


Re: Quizz

Messagede Cclleemm le 30 Juin 2009, 07:00

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.
Image
Avatar de l'utilisateur
Cclleemm
Admin'z
Admin'z
 
Messages: 2766
Inscription: 14 Mar 2007, 16:21
Localisation: Savoie
Points: 2012


Re: Quizz

Messagede NestorCastor le 30 Juin 2009, 10:55

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.



_______________________________________________________________________________________________________________________________________________________
tuto photoshop
NestorCastor
Mini Plug'zien
Mini Plug'zien
 
Messages: 21
Inscription: 06 Avr 2009, 23:45
Points: 23


Re: Quizz

Messagede jeromecold le 30 Juin 2009, 18:36

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!
Arobase plus
Avatar de l'utilisateur
jeromecold
Plug'zien Pro
Plug'zien Pro
 
Messages: 3156
Inscription: 05 Sep 2007, 13:18
Points: 2915



Retourner vers PHP

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité