IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Modification d'un sript de quizz


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut Modification d'un sript de quizz
    Bonjour,

    Je suis débutante en PHP, et j'ai trouvé sur le web un script pour réaliser un quiz multijoueur en simultané.
    J'aimerai le modifier pour y ajouter une base de donnée, afin de pouvoir afficher les joueurs et les résultats de chaque joueur en fin de quiz sous forme de bargarph.

    Voici le code des fichiers php:

    1/ quizz.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <?
     include("questions.php");
    ?>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="content-language" content="fr" />
    <? print"<title>$titre</title>"; ?>
    <link type="text/css" rel="stylesheet" href="quizz.css" />
    </head>
    <body>
    <?
    if (isset($entete)) {
    	print"<div class=\"entete\">";
    	include ("$entete");
    	print"</div>";
    }
    ?>
    <div class="quizz">
    <div class="titre">
    	<? print "\t".$titre."\n"; ?>
    </div>
    <?
    extract ($_POST);
    if (!isset($result)) {
    	print "<form action=\"$PHP_SELF\" method=\"post\">";
    	for ($i=0; $i<count($quizz); $i++) {
    		$nom="_".$i;
    		print "\n<div class=\"question\">\n";
    		print "\t".$quizz[$i][0]."\n";
    		print "</div>\n<div class=\"propositions\">\n";
         		for ($j=1; $j<count($quizz[$i])-2; $j++) {
    			$quest=$quizz[$i][$j];
    	  		print "\t<input type=\"radio\" name=\"$nom\" value=\"$j\" />$quest<br />\n";
         		}
    		print "</div>";
         		print "<br />";
    	}
    	print "<input type=\"hidden\" name=\"result\" value=\"voir\" />\n";
    	print "<input type=\"submit\" class=\"bouton\" value=\"Valider\" /><br />\n</form>"; 
    }
    else {
    	print "<div class=\"resultats\">R&eacute;sultats du quizz</div>";
    	$points=0;
    	for($i=0; $i<count($quizz); $i++) {
    		$nom="_".$i;
    		print "\n<div class=\"question\">\n";
    		print "\t".$quizz[$i][0]."\n</div>\n";
    		$numero_bonne=$quizz[$i][count($quizz[$i])-2]; /* avant-dernière valeur du tableau */
            	$bonne=$quizz[$i][$numero_bonne]; /* Bonne réponse */
    		print "<div class=\"verif\">";
    		if ($$nom==$numero_bonne) {
    			print "Votre r&eacute;ponse <b><i>".$bonne."</i></b> est exacte";
    			$points++;
    		}
    		else {
    			print "La bonne r&eacute;ponse est <b>$bonne</b> mais vous ";
    			if ($$nom=="") {
    				print"n'avez rien r&eacute;pondu";
    			}
    			else {
    				print"avez r&eacute;pondu <b>".$quizz[$i][$$nom]."</b>";
    			}
    		}
    		print "</div>";
    		$commentaire=$quizz[$i][count($quizz[$i])-1];
    		if ($commentaire!=NULL) print "\n<div class=\"commentaire\">$commentaire</div>";
    	//print"<br /><br />\n";
    	$nom++;
    	}
    	if($points==count($quizz)) {
    		print"<div class=\"felicitations\">F&eacute;licitations vous avez tout juste</div>\n";
    	}
    	else {
    	  print "<div class=\"points\">Vous avez marqué $points point";
    		  if ($points>1) print "s";
    	  print " sur ".count($quizz)."</div>\n";
    	}
    }
    ?>
     
    </div>
    <?
    if (isset($pied)) {
    	print"<div class=\"pied\">";
    	include ("$pied");
    	print"</div>";
    }
    ?>
    </body>
    </html>
    et en 2

    question.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?
    $titre="Démo PHP-Quizz";
    $entete="entete.html"; /* entête du quizz */
    $pied="pied.html"; /* pied du quizz */
    $quizz= array(
     array("Quelle est l'année de naissance de Victor Hugo ?",
    	"1824","1831","1802","1805","3","Il est né le 26 février 1802 à Besançon"),
     array("Le peintre Chagall était d'origine russe ?",
    	"vrai","faux","1","Il est né le 7 juillet 1887 à Vitebsk (Russie)"),
     array("Lequel de ces chanteurs a été accompagné par les Wailers",
     	"Bob Marley","Frank Sinatra","Robert Smith","1","Robert Smith est le chanteur de The Cure"),
     array("Le saleron est:",
    	"une personne qui a commis des vols et des crimes","un mélange de plâtre et de fibres végétales","la partie creuse d'une salière","3","")
    );
    ?>
    Merci de votre aide

  2. #2
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Pour ce qui est du fichier réponse, je ferais comme ceci:

    En base de données:
    • Une table "questions" avec id de question, texte de question, et un champs "reponses" du type 1,2,3;2 (;2 signifiant la bonne réponse)
    • Une table réponses avec id réponse, texte réponse.


    Fichier questions.php, l'algo serait du genre:
    - Récupération des questions et mis dans un array.
    - Et ensuite, c'est un traitement comme avant ^^


    ____________
    Détails:
    pour récupérer les réponses avec "1,2,3;2"
    il te suffit d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($liste_reponse, $juste) = explode(';', $donnes);
    tu auras donc "1,2,3" et "2".

    C'est assez précis? Je n'ai pas trop de temps pour le développer mais sinon, ça aurait été avec plaisir. courage

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut
    merci de ta reponse , je vais essayer de ce que j'arrive à faire ;-)

  4. #4
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Je tiens à préciser que ceci est fait rapidement, y a sûrement pas mal d'optimisation à apporter et de logique aussi. Mais ça fonctionne. Comme dit en MP, il n'y a pas de systeme d'utilisateur avec point, mais uniquement la gestion des questions/réponses.

    La db:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    -- phpMyAdmin SQL Dump
    -- version 3.3.9
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 25 Mars 2011 à 13:58
    -- Version du serveur: 5.5.8
    -- Version de PHP: 5.3.4
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `quizz`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `questions`
    --
     
    CREATE TABLE IF NOT EXISTS `questions` (
      `id_question` int(11) NOT NULL AUTO_INCREMENT,
      `texte_question` text NOT NULL,
      `choix_question` varchar(10) NOT NULL,
      PRIMARY KEY (`id_question`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    --
    -- Contenu de la table `questions`
    --
     
    INSERT INTO `questions` (`id_question`, `texte_question`, `choix_question`) VALUES
    (1, 'Quel est le meilleur forum traitant de la programmation?', '1,2,3;2'),
    (2, 'Que Signifie AFUP?', '4,5,6;4');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `reponses`
    --
     
    CREATE TABLE IF NOT EXISTS `reponses` (
      `id_reponse` int(11) NOT NULL AUTO_INCREMENT,
      `texte_reponse` text NOT NULL,
      PRIMARY KEY (`id_reponse`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `reponses`
    --
     
    INSERT INTO `reponses` (`id_reponse`, `texte_reponse`) VALUES
    (1, 'lesite.com'),
    (2, 'developpez.com'),
    (3, 'lautresite.com'),
    (4, 'Association Française des Utilisateurs de PHP'),
    (5, 'Ahem, je sais pas.'),
    (6, 'Aide fonction utilisateur prolongé');

    Questions.php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
     
      $questions = array();
      $query = mysql_query('SELECT * FROM questions ORDER BY id_question');
      while($question = mysql_fetch_assoc($query)){
        list($liste_choix, $question['reponse_juste']) = explode(';', $question['choix_question']);//on sépare les choix de la réponse juste
        $choix = explode(',', $liste_choix);//on met dans un tableaux les différent choix
        unset($question['choix_question']);//on supprime la variable car l'a exploté, plus besoin.
        $question['choix_reponse'] = array();//on va mettre dedans nos réponses qui seront chacune un tableau.
        foreach($choix as $unChoix){//pour chaque choix
          $requete_reponses = mysql_query('SELECT * FROM reponses WHERE id_reponse = '.$unChoix);//on récupère le choix de réponse
          $reponse = mysql_fetch_assoc($requete_reponses);// on met dans un tableau
          array_push($question['choix_reponse'], $reponse);//on met le choix de réponse dans le tableau de choix des réponses
        }
        array_push($questions, $question);//on met la réponse dans le tableau de réponses.
      }
      //cette page génère donc la variable "questions" que nous utiliserons pour afficher le questionnaire.
    ?>

    Index.php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <?php
      session_start();//va nous permettre de connaitre le nombre de question dans le formulaire.
      mysql_connect('localhost','root','');
      mysql_select_db('quizz');
     
      function pre($tab){
        echo '<pre>';
          print_r($tab);
        echo '</pre>';
      }
     
      if(filter_has_var(INPUT_POST, 'goForm')){//si le bouton formulaire est cliqué (donc formulaire validé). - pareil ques isset()
        $output = '';//texte à afficher à la fin des testes.
        for($i = 1; $i <= $_SESSION['nombre_question']-1; $i++){//on fait une boucle qui va jusqu'au nombre de question
          if(filter_has_var(INPUT_POST, 'reponse_question'.$i)){//si la personne a répondu
            $query = mysql_query('SELECT * FROM questions WHERE id_question = '.$i) or die (mysql_error());
            $question = mysql_fetch_assoc($query);
            list($not_used, $reponse_juste) = explode(';', $question['choix_question']);
            $output .= 'A la question "'.$question['texte_question'].'" vous avez répondu ';
            if($_POST['reponse_question'.$i] != $reponse_juste){
              $query = mysql_query('SELECT texte_reponse FROM reponses WHERE id_reponse = '.$reponse_juste) or die (mysql_error());
              $reponse = mysql_fetch_assoc($query);
              $output .= 'faux. La réponse était: '.$reponse['texte_reponse'];
            }else{
              $output .= 'juste. Bravo!';
            }
            $output .= '<br /><br />';
          }else{
            $output .= 'Vous n\'avez pas répondu à la question "'.$question['texte_question'].'"<br />';
          }
        }//fin for
      }else{//si formulaire pas envoyé, on récupère les questions pour les afficher.
      }
        require_once 'questions.php';
    ?>
    <!DOCTYPE html>
     
    <html lang="fr">
    <head>
      <meta charset="ISO-8859-1">
     
      <title>Quizz artsandsport!</title>
     
    </head>
    <body>
      <?php if(isset($output)){echo'<p style="text-align:center;">'.$output.'<br /><br /><a href="./index.php" title="Retour">Retour</a></p>';}else{ ?>
      <form action="./index.php" method="post">
      <?php
        $i = 1;//on initialise à 1. Ce compteur va permettre d'assigner un numéro à chaque question pour les différencier.
        foreach($questions as $question){//pour que question dans le tableau "$questions"
          echo '<fieldset>';//pour faire beau
            echo '<legend>'.$question['texte_question'].'</legend>';//Le texte de la question.
            echo '<p style="padding-left:30px;">',"\r\n";
            foreach($question['choix_reponse'] as $unchoix){
              echo '<input type="radio" name="reponse_question'.$i.'" value="'.$unchoix['id_reponse'].'" /> '.$unchoix['texte_reponse'].'<br />',"\r\n";
            }
            echo '</p>';
          echo '</fieldset>';
          $i++;//on incrémente un à $i car on va passer à la question suivante.
        }
        $_SESSION['nombre_question'] = $i;//connaitre le nombre de question dans le formulaire après la validation.
      ?>
          <br /><input type="submit" value="Valider" name="goForm" />
      </form>
      <?php } ?>
    </body>
    </html>

    Cordialement, guillaume

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut merci
    Merci, j'avais pas eu de mail, m'indiquant une réponse , merci beaucoup

Discussions similaires

  1. Quizz vocabulaire : modification d'un Userform
    Par Loïc_T dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/03/2015, 13h06
  2. modification sur un sript
    Par guttts dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2005, 10h45
  3. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo