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

Langage PHP Discussion :

quiz: récupérer les données d'un formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Par défaut quiz: récupérer les données d'un formulaire
    Bonjour,

    j'espère que je suis dans le bon forum (j'ai hésité avec celui des scripts téléchargés, mais le mien ne semblait pas rentrer dans les catégories)

    Voilà, je cherche un réaliser un quiz en php, avec une base de données MySQL.

    Je sais, cela parait trivial.

    J'ai pas mal cherché sur internet, jusqu'à trouver un script simple qui me convenait.

    Mais il a un bug! Le fichier "correction.php" ne fonctionne pas.

    Je suis débutant depuis 15 jours en PHP et je ne saisis pas encore toutes les subtilités du langage.

    Voici les différents fichiers:
    Création de la table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE `qcm` (
      `id` tinyint(4) NOT NULL auto_increment,
      `question` text NOT NULL,
      `rep1` varchar(60) NOT NULL default '',
      `rep2` varchar(60) NOT NULL default '',
      `rep3` varchar(60) NOT NULL default '',
      `rep_juste` varchar(60) NOT NULL default '',
      `commentaire` text NOT NULL,
      `niveau` varchar(10) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=27 ;
    Voici le fichier niveau.php, par lequel tout commence:
    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
    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Choix du niveau du QCM</title>
    <link href="qcm.css" rel="stylesheet" type="text/css" media="screen">
    </head>
     
    <body>
    <p align="center" class="couleur"> Choisissez un niveau de questions</p>
    <form method="post" action="debut.php">
      Niveau : 
      <select name="niveau" size="1">
        <option value="facile">Facile</option>
        <option value="difficile">Difficile</option>
      </select>
      &nbsp; Nombre de questions : 
      <select name="nbQuestions" size="1">
      <option value="5" selected>5</option>
      <option value="10">10</option>
      </select>
      <input type="submit" value="Envoyer" />
    </form>
    <p>&nbsp;</p>
    </body>
    </html>
    Voici le fichier de connexion, classique, intitulé login.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
    <?php
    // Url de votre base de données. Généralement, c'est localhost.
    $Serveur_db ="localhost"; 
     
    // Votre login/identification pour votre base de données 
    $User_db ="root"; 
     
    // Votre mot de passe pour la base de donnée 
    $Passe_db ="";
     
    // Nom de votre base de donnée
    $Base_name="ricksodjahin";
     
    // Connection à MySQL. En utilisant une connexion persistante, on n’a pas besoin de faire 
    //mysql_close() à chaque fois. 
    $Connect_db = mysql_connect($Serveur_db,$User_db,$Passe_db) or die("Connexion au serveur impossible"); 
     
    // Sélection de la base de donnée
    mysql_select_db($Base_name) or die("Impossible de se connecter à la base de données."); 
    ?>
    Voici le fichier debut.php, qui permet de démarrer le quiz, une fois le niveau et le nombre de questions renseignés:

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>D&eacute;but du QCM</title>
    <link href="qcm.css" rel="stylesheet" type="text/css" media="screen">
    </head>
    <body> 
    <p class="couleur">PLACE AU JEU </p>
    <fieldset>
    <legend align="center">QCM</legend>
    <form method="post" action="correction.php">
    <?php 
    $nbQuestions = $_POST['nbQuestions'];
    include ("config.php");
    //Comptage du nombre d'enregistrements dans la table QCM
    $nbEnreg = mysql_query("SELECT * FROM qcm");
    $nbEnreg = mysql_num_rows($nbEnreg);
    // Requete-sélection des questions. Ceci se fait aléatoirement avec RAND();
    $requete = mysql_query("SELECT id,question,rep1,rep2,rep3,rep_juste,commentaire FROM qcm WHERE niveau='".$_POST['niveau']."' ORDER BY RAND() LIMIT $nbQuestions ");
    $i=0;
    while ($donnees = mysql_fetch_array($requete)){
    ?>
    <table> <tr> <td><?php
    $i++;
    echo $i.') '.$donnees['question']; ?></td></tr>
    <tr><td><input type="radio" name="<?php echo 'reponse'.$i; ?>" value="<?php echo $donnees['rep1']; ?>" />
    <?php echo $donnees['rep1']; ?></td></tr>
    <tr><td><input type="radio" name="<?php echo 'reponse'.$i; ?>" value="<?php echo $donnees['rep2']; ?>" />
    <?php echo $donnees['rep2']; ?></td></tr>
    <tr><td><input type="radio" name="<?php echo 'reponse'.$i; ?>" value="<?php echo $donnees['rep3']; ?>" />
    <?php echo $donnees['rep3']; ?></td></tr><br/>
    <input type="hidden" name="<?php echo 'question'.$i; ?>" value="<? echo htmlentities($donnees['question'], ENT_QUOTES); ?>" />
    <input type="hidden" name="<?php echo 'juste'.$i; ?>" value="<? echo $donnees['rep_juste']; ?>" /> 
    <input type="hidden" name="<?php echo 'commentaire'.$i; ?>" value="<? echo htmlentities($donnees['commentaire'], ENT_QUOTES); ?>" /></table>
    <?php
    }
    ?>
    <br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 
     <input type="hidden" name="nbQuestions" value="<?php echo $nbQuestions ; ?>" />
     <input name="envoyer" type="submit" value="Corriger le QCM" />
    </form>
    </fieldset>
    </body>
    </html>
    Et voici le fichier de correction, qui bloque.

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>D&eacute;but du QCM</title>
    <link href="qcm.css" rel="stylesheet" type="text/css" media="screen">
    </head>
    <body> 
    <p class="couleur">Correction du QCM</p>
    <p align="center"><a href="niveau.php">Rejouer</a></p>
    <fieldset><legend align="center">Correction</legend>
     
    <?php 
    //La variable $nbPoints comptera le nombre de réponses justes données par le joueur
    $nbPoints = 0;
    function verif ($joueur,$correct){
    if ($joueur == $correct){
    	echo '<b>Bonne réponse.</b><br>';
    	$GLOBALS["nbPoints"]++ ;
    	}
    else
    	echo '<b>Mauvaise réponse.</b><br/> La bonne réponse est <b>'.$correct.'.</b><br/> ' ;
    	echo 'Détails : ';
    }
     
    for ($j=1; $j<=$_POST['nbQuestions']; $j++)
    {
    if (isset($_POST['reponse'.$j]))
    	${"reponse"."$j"} = $_POST['reponse'.$j];
    else
    	${"reponse"."$j"} =' QUE DALLE. ';
    }
     
    $i=1;
    while ($i<=$_POST['nbQuestions']){
    echo $i.') '.$_POST['question'.$i].'<br>'; ?>
    &nbsp;Vous avez répondu : <?php 
    echo '<u>'.${"reponse"."$i"}.'</u> '; 
    verif(${"reponse"."$i"},$_POST['juste'.$i]);
    echo $_POST['commentaire'.$i].'<br /><br />';
    $i++;
    }
    if ($nbPoints <= 1) {
    ?> 
    <p class="couleur2"> Vous avez donné <?php echo $nbPoints; ?> réponse juste sur <?php echo $_POST['nbQuestions']; ?>&nbsp;.</p>
    <?php 
    } else {
    ?>
    <p class="couleur2"> Vous avez donné <?php echo $nbPoints; ?> réponses justes sur <?php echo $_POST['nbQuestions'];  ?>&nbsp;.</p> <?php } ?>
    </fieldset>
    <p align="center"><a href="niveau.php">Rejouer</a></p>
    </body>
    </html>
    En effet, les réponses choisies ne sont pas récupérées et on obtient donc à chaque fois: "mauvaise réponse". De plus, la bonne réponse n'est pas indiquée et il n'y a pas de commentaire.

    J'y suis depuis deux jours, mais j'ai beau essayer de debugguer le code, étant débutant en PHP, je ne vois pas ce qui se passe.

    La seule chose que j'ai remarqué est que la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['reponse'.$j]))
    donne false.

    Quelqu'un pourrait-il m'aider à correctement récupérer les données du formulaire?

    Merci par avance,
    Johnny

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne sais pas si ça vaut le coup de mettre une rustine sur ce code tellement il est faible.

    Les réponses sont toujours affichées dans le même ordre et la bonne réponse a été oubliée.
    La bonne réponse apparait par contre dans le code HTML, ce qui n'est pas très sérieux.
    Le HTML produit ne doit pas être exceptionnel non plus.

    Si tu veux vraiment utiliser ce code, je peux t'aider mais bon ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je ne sais pas si ça vaut le coup de mettre une rustine sur ce code tellement il est faible.

    Les réponses sont toujours affichées dans le même ordre et la bonne réponse a été oubliée.
    La bonne réponse apparait par contre dans le code HTML, ce qui n'est pas très sérieux.
    Le HTML produit ne doit pas être exceptionnel non plus.

    Si tu veux vraiment utiliser ce code, je peux t'aider mais bon ...
    bonjour sabotage,

    eh bien en fait, étant vraiment débutant en PHP (je connais mieux le java), je t'avoue que pour le moment, je me "contente" vraiment du plus simple.

    J'ai trouvé des scripts qcm sur internet, mais parfois très complexes, et je n'ai pas le niveau pour les comprendre. Et la plupart ne fonctionnent pas directement sur wampserver (et je n'ai pas encore les connaissances pour correctement les configurer)

    De mon côté, j'ai réalisé d'autres fonctions qui marchent (ajout, suppression, modification d'une question) mais j'essaie de tout assembler.

    Mes étapes de création sont:

    *Du point de vue administrateur:
    - ajout de questions
    - modification de questions
    - suppression de questions
    - visualisation de toutes les questions (j'y suis arrivé, mais je ne dois pas encore avoir tout compris, car ça plante quand j'arrive sur la page, mais ça fonctionne quand j'actualise... va comprendre)
    - indication de la bonne réponse (ça, je ne sais pas encore comment faire)
    - commentaire en cas de mauvaise réponse
    - création de plusieurs qcm et donc choix, au niveau de l'interface, du qcm qui m'intéresse

    *du point de vue utilisateur:
    - choix d'un qcm par thématique
    - déroulement du qcm et affichage du score final
    - déroulement aléatoire de l'ordre des questions et des réponses


    Ma table est simple: ID_question, Libelle_question, Reponse1, Reponse2, Reponse3. Pour le moment, je ne vais pas plus loin.

    Pour la partie ajout, suppression et modification, voici ce que j'ai écrit (attention, c'est forcément du code simpliste):

    Fichier questionsGestion.php (démarrage de l'interface administrateur):
    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
    <?php
    require_once("../connexionMysql.inc.php");
    //----Requete suppression
    if(isset($_GET['supp']))
    {
    	$requete2="DELETE FROM qcm WHERE ID_question = '".$_GET['ID_question']."' ";
    	mysql_query($requete2);
    }
    //----Requete liste
    $requete="SELECT ID_question, Libelle_question FROM qcm";
    $resultat=mysql_query($requete);
     
    //--------------requête du menu
    $requete3="SELECT ID_question, Libelle_question FROM qcm";
    $resultat3=mysql_query($requete3);
    ?>
     
    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
     
    <body>
    <a href="questionsAjout.php">Ajout question </a>
     
    <form id="monform" name="form1" method="get" action="<?php  echo $_SERVER['PHP_SELF']; ?>">
    	<label>Visualisez les questions :
    	<select name="question" id="question">
      <?php while($questions=mysql_fetch_array($resultat3))  { ?>
        <option <?php  if(!isset($_GET['ID_question'])) $_GET['ID_question']=1; if($questions['ID_question']==$_GET['ID_question']) echo  "selected='selected'"; ?> value="<?php echo $questions['ID_question']; ?>"><?php echo $questions['ID_question'].") ".$questions['Libelle_question']; ?></option>
      <?php } ?>
      </select>
    	</label>
    </form>
     
     
    <table width="600" border="1" cellspacing="0" cellpadding="5">
      <tr>
        <td>ID_question</td>
    	<td>Modif</td>
    	<td>Suppression</td>
      </tr>
      <?php while ($qcm = mysql_fetch_array($resultat)) { ?>
      <tr>
        <td><?php echo $qcm['ID_question']; ?></td>
        <td><a href="questionsModif.php?ID_question=<?php echo $qcm['ID_question']; ?>" >Modif</a></td>
    	<td><a href="questionsGestion.php?ID_question=<?php echo $qcm['ID_question']; ?>&supp=ok" >Suppression</a></td>
      </tr>
      <?php  }  ?>
    </table>
     
    </body>
    </html>
    Ajout d'une nouvelle question: fichier questionsAjout.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
    <?php
    require_once("../connexionMysql.inc.php");
    if(isset($_POST['bouton']))
    {
    	$requete="INSERT INTO qcm SET Libelle_question='".$_POST['Libelle_question']."',  Reponse1='".$_POST['Reponse1']."', Reponse2='".$_POST['Reponse2']."',  Reponse3='".$_POST['Reponse3']."' ";
     
    	$resultat=mysql_query($requete);
    header("Location:questionsGestion.php");
    }
    //--------------requête du menu
    $requete2="SELECT ID_question, Libelle_question FROM qcm";
    $resultat2=mysql_query($requete2);
    ?>
    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
     
    <body>
    <a href="questionsGestion.php?logout=ok" >Deconnexion</a>
    <br/>
     
    <form id="monform" name="form1" method="post" enctype="multipart/form-data" action="questionsAjout.php">
      <p>
        <label>Libelle_question :
          <input type="text" name="Libelle_question"  />
        </label>
      </p>
      <p>
        <label>Reponse1 :
          <input type="text" name="Reponse1"  />
        </label>
      </p>
        <p>
        <label>Reponse2 :
          <input type="text" name="Reponse2"  />
        </label>
      </p>
        <p>
        <label>Reponse3 :
          <input type="text" name="Reponse3"  />
        </label>
      </p>
      <p>
        <label>
          <input type="submit" name="bouton"  value="Envoyer" />
        </label>
      </p>
    </form>
     
    </body>
    </html>

    Fichier de modification des questions: questionsModif.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
    <?php
    require_once("../connexionMysql.inc.php");
    if(isset($_POST['bouton']))
    {
    $requete="UPDATE qcm SET Libelle_question='".$_POST['Libelle_question']."',  Reponse1='".$_POST['Reponse1']."', Reponse2='".$_POST['Reponse2']."',  Reponse3='".$_POST['Reponse3']."' WHERE ID_question='".$_POST['ID_question']."'";
     
    mysql_query($requete);
    header("Location:questionsGestion.php");
    }
    //--------------requête du menu
    $requete2="SELECT ID_question, Libelle_question FROM qcm";
    $resultat2=mysql_query($requete2);
     
    //--------------requête de la fiche modif
    $requete3="SELECT * FROM qcm WHERE ID_question='".$_GET['ID_question']."' " ;
    $resultat3=mysql_query($requete3);
    $qcm=mysql_fetch_array($resultat3);
    ?>
    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
     
    <body>
    <a href="questionsGestion.php?logout=ok" >Deconnexion</a>
    <br/>
     
    <form id="monform" name="form1" method="post" enctype="multipart/form-data" action="questionsModif.php">
      <p>
        <label>ID_question : <input type="hidden" name="ID_question" value="<?php echo $qcm['ID_question']; ?>" >
          <?php echo $qcm['ID_question']; ?>
        </label>
      </p>
      <p>
        <label>Libelle_question :
          <input type="text" name="Libelle_question"  value="<?php echo $qcm['Libelle_question']; ?>" />
        </label>
      </p>
      <p>
        <label>Reponse1 :
          <input type="text" name="Reponse1"  value="<?php echo $qcm['Reponse1']; ?>" />
        </label>
      </p>
        <p>
        <label>Reponse2 :
          <input type="text" name="Reponse2"  value="<?php echo $qcm['Reponse2']; ?>" />
        </label>
      </p>
        <p>
        <label>Reponse3 :
          <input type="text" name="Reponse3"  value="<?php echo $qcm['Reponse3']; ?>" />
        </label>
      </p>
        <p>
        <label>
          <input type="submit" name="bouton"  value="Envoyer" />
        </label>
      </p>
    </form>
     
    </body>
    </html>
    Voilà... et comme je pataugeais avec la partie administrateur, j'ai essayé de me lancer dans la partie utilisateur.

    Ce serait donc avec plaisir si tu pouvais m'aider, car je tiens à réaliser ce QCM en même temps que j'approfondis mes connaissances en PHP.

    Merci encore,
    Johnny

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'ai vraiment juste corrigé les grosses ficelles :
    - utilisation de tableaux
    - réponses dans le désordre

    debut.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Début du QCM</title>
    <link href="qcm.css" rel="stylesheet" type="text/css" media="screen">
    </head>
    <body> 
    <p class="couleur">PLACE AU JEU </p>
    <fieldset>
    <legend align="center">QCM</legend>
    <form method="post" action="correction.php">
    <?php
    $nbQuestions = $_POST['nbQuestions'];
    include ("config.php");
    //Comptage du nombre d'enregistrements dans la table QCM
    $nbEnreg = mysql_query("SELECT * FROM qcm");
    $nbEnreg = mysql_num_rows($nbEnreg);
    // Requete-sélection des questions. Ceci se fait aléatoirement avec RAND();
    $requete = mysql_query("SELECT id,question,rep1,rep2,rep3,rep_juste,commentaire FROM qcm WHERE niveau='".$_POST['niveau']."' ORDER BY RAND() LIMIT 
    
    $nbQuestions ");
    $i = 0;
    while ($donnees = mysql_fetch_array($requete)){
     
    $i++;
    $tblReponses = array($donnees['rep1'], $donnees['rep2'], $donnees['rep3'], $donnees['rep_juste']); // on prend les 4 réponses
    shuffle($tblReponses); // on mélange
    echo '<table>
    	<tr>
    		<td>'.$i.') '.$donnees['question'] .'</td>
    	</tr>';
     
    foreach ($tblReponses as $reponse) {
    	echo '<tr><td><input type="radio" name="reponse['.$i.']" value="'.$reponse.'" />' . $reponse . '</td></tr>';
    }
    echo '
    <input type="hidden" name="question['.$i.']" value="' . $donnees['question'] . '" />
    <input type="hidden" name="juste['.$i.']" value="' . $donnees['rep_juste'] .'" /> 
    <input type="hidden" name="commentaire['.$i.']" value="'.$donnees['commentaire'].'" /></table>';
    }
    echo '
     <input type="hidden" name="nbQuestions" value="' . $nbQuestions .'" />
     <input name="envoyer" type="submit" value="Corriger le QCM" />
    </form>
    </fieldset>
    </body>
    </html>';
    correction.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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Correction du QCM</title>
    <link href="qcm.css" rel="stylesheet" type="text/css" media="screen">
    </head>
    <body> 
    <p class="couleur">Correction du QCM</p>
    <p align="center"><a href="niveau.php">Rejouer</a></p>
    <fieldset><legend align="center">Correction</legend>
     
    <?php 
    print_r ($_POST);
    //La variable $nbPoints comptera le nombre de réponses justes données par le joueur
    $nbPoints = 0;
    function verif ($joueur,$correct){
    if ($joueur == $correct){
    	echo '<b>Bonne réponse.</b><br>';
    	$GLOBALS["nbPoints"]++ ;
    	}
    else
    	echo '<b>Mauvaise réponse.</b><br/> La bonne réponse est <b>'.$correct.'.</b><br/> ' ;
    	echo 'Détails : ';
    }
     
    foreach($_POST['question'] as $j=>$values) {
    	if (isset($_POST['reponse'][$j])) {
    		$reponse[$j] =  $_POST['reponse'][$j];
    	}
    	else {
    		$reponse[$j] = 'QUE DALLE';
    	}
     
    	echo $j.') '.$_POST['question'][$j].'<br>
    	Vous avez répondu : <u>'.$reponse[$j].'</u><br/>'; 
    	verif($reponse[$j],$_POST['juste'][$j]);
    	echo $_POST['commentaire'][$j].'<br /><br />';
    }
     
    if ($nbPoints <= 1) {
    ?> 
    <p class="couleur2"> Vous avez donné <?php echo $nbPoints; ?> réponse juste sur <?php echo $_POST['nbQuestions']; ?>&nbsp;.</p>
    <?php 
    } else {
    ?>
    <p class="couleur2"> Vous avez donné <?php echo $nbPoints; ?> réponses justes sur <?php echo $_POST['nbQuestions'];  ?>&nbsp;.</p> <?php } ?>
    </fieldset>
    <p align="center"><a href="niveau.php">Rejouer</a></p>
    </body>
    </html>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Par défaut
    Merci! Je vais tout de suite regarder ça!

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Par défaut
    Merci infiniment pour ton aide.

    Je vais à présent intégrer mes fichiers de modification, d'ajout et de suppression de questions.

    Merci encore pour ton aide.

    Johnny

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/01/2020, 14h21
  2. [FORM] récupérer les données d'un formulaire
    Par dragonfly dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 04/12/2007, 13h53
  3. Réponses: 14
    Dernier message: 15/05/2007, 14h51
  4. Récupérer les données d'un formulaire
    Par rimeh dans le forum Langage
    Réponses: 12
    Dernier message: 05/02/2007, 14h58
  5. récupérer les données d'un formulaire un peu spécial
    Par Jim_Nastiq dans le forum Interfaces Graphiques
    Réponses: 12
    Dernier message: 10/07/2006, 10h53

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