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 :

Problème avec quizz


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut Problème avec quizz
    Bonjour à tous,

    Je vous expose ma situation :

    J'ai fait un quizz qui est affiché en 4 pages de 5 questions, mais le problème est qu'il ne retient que les réponses de la dernière page : celle où on valide pour obtenir le résultat final.

    Pour les pages précédentes, c'est comme si les réponses choisies étaient éffacées au moment de passer à la page suivante.

    Ce que je voudrais c'est garder en mémoire toutes les réponses sélectionnées pour chacune des pages, afin qu'elles soient comptabilisées sur le résultat final.

    Si quelqu'un pouvait m'aider ça serait super cool.

    merci à tous

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612

  3. #3
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut
    Bonjour à tous,

    Je suis sur le problème depuis plusieurs jours, et je suis complètement perdu avec les sessions.

    J'ai créé 4 pages (page2, 2_1, 2_2, 2_3.php) quasi identiques : j'ai juste modifié la limite pour afficher les questions désirées sur chaque page, et avec un lien en bas pour accéder à la série de questions suivantes.
    - la 1ère affiche les 5 premières questions du quizz (page2.php), la 2nde (page2_1.php) affiche les questions 6 à 10, et ainsi de suite jusqu'à la 20ème question.

    Les données sont ensuite transmises à la page3.php qui récupère les réponses aux questions, ainsi que le résultat.
    Mais le problème, c'est que j'arrive vraiment pas à transmettre les données des pages 2, 2_1, 2_2.php vers la page3.php
    Seule la dernière page (page2_3.php) est prise en compte.
    J'ai modifié le code des centaines de fois mais rien n'y fait. Les sessions c'est assez clair concernant l'authentification, mais pour mon cas je perd la tête.

    Exemple : page2.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
            echo '<form method="post" action="page3.php">';    
     
     
                //Execution de la requete SQL
                //$reqsql="Select numquest,question,rep1,rep2,rep3,rep4,rep from questionnaire where numquest=".$id;
                $reqsql="SELECT * FROM questionnaire WHERE numquest<21 limit 0, 5";
                $resbase=mysql_query($reqsql,$db) or die ("Echec de $sqlquest");
     
     
                while ($quizz=mysql_fetch_assoc($resbase)){
                //$num prend la valeur trouvé dans le champs 0
                $num=$quizz['numquest'];
                //$question prend la valeur trouvé dans le champs 1
                $question=$quizz['question'];
                //$reponse1 prend la valeur trouvé dans le champs 2
                $reponse1=$quizz['rep1'];
                //$reponse2 prend la valeur trouvé dans le champs 3
                $reponse2=$quizz['rep2'];
                //$reponse3 prend la valeur trouvé dans le champs 3
                $reponse3=$quizz['rep3'];
                //$reponse4 prend la valeur trouvé dans le champs 4
                $reponse4=$quizz['rep4'];
                //$repexact prend la valeur trouvé dans le champs 5
                $repexact=$quizz['rep'];
     
                echo '<h1>';
                //Affichage à l'ecran du numero de la question et de la question       
                echo $num.") ".$question;
                echo "<br />";
                //Affichage du choix des réponses avec des radiobutton
                echo '<h2>';
                echo '<input type="radio" name="rep'.$num.'" value="1" />'.$reponse1.'<br />';
    			      echo '<input type="radio" name="rep'.$num.'" value="2" />'.$reponse2.'<br />';
    			      echo '<input type="radio" name="rep'.$num.'" value="3" />'.$reponse3.'<br />';
    			      echo '<input type="radio" name="rep'.$num.'" value="4" />'.$reponse4.'<br />';
                echo "<br />";
                echo "<br />";
                echo '</h2>';
                echo '</h1>';}
     
            //ferme la connection à la base
            mysql_close();
     
     
    ?>
     
    <p> <a href="page2_1.php>Suivant</a> </p>
     
     
     echo "  Quel est votre nom ?<br />";
        echo $nom="  <input type=\"text\" name=\"nom\" value=\"Moi\" size=\"20\"><br /> ";
        echo '<input type="submit" value="Valider" /></form>';

    Voici maintenant la page3.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
     
    <?php
        //Initialise le score à 0
        $score=0;
     
        if(isset($_POST['nominvitequizz'])){ $nominvitequizz = $_POST['nominvitequizz']; }
        //pour tous les enregistrement dans la base de la table questionnaire
        for ($i = '1'; $i <21; $i++) {
            //on recupere toutes l'index de la réponse données par le joueur pour toutes les questions
            $numrep=$_POST['rep'.$i];
            if(isset($_POST['rep'.$i])){
     
            //Requete SQL pour recupéré la question et la réponse donné par l'utilisateur dans la table questionnaire
            $reqsql="Select question,rep".$numrep." from questionnaire where numquest=".$i;
            $resbasereputil=mysql_query($reqsql,$db) or die ("Echec de $reqsql");
            $quizzutil=mysql_fetch_array($resbasereputil);
            //$repexact correspond à la réponse du joueur
            $repexactutil=$quizzutil[1];
            //$question correspond à la question
            $question=$quizzutil[0];
     
            //affichage du numero de question et de la question
            echo $i.") ".$question."</br>";
            //affichage de la reponse donné par l'utilisateur
            echo "<h4>Votre réponse : ".$repexactutil."</h4>";
     
            //Requete SQL pour recupéré la bonne réponse à la question dans la table questionnaire
            $reqrep="Select rep from questionnaire where numquest=".$i;
            $resbase=mysql_query($reqrep,$db) or die ("Echec de $reqrep");
            $quizz=mysql_fetch_array($resbase);
            //$repexact correspond à la bonne reponse
            $repexact=$quizz[0];
     
            //affichage de la reponse exact
            echo "<h4> La réponse exacte : ".$repexact."</h4><br/>";
            echo'</br>';
            echo'</br>';
     
            //Si l'utilisateur trouve la bonne reponse, alors un point en plus
            if ($repexactutil==$repexact){
            $score=$score+1;}
        }
        else{
            $score=$score;
            Echo "<h4>pas de réponse pour la question ".$i."</h4>";
            echo'</br>';
            echo'</br>';}    
        }
        echo'</br>';
        //affichage du score
        echo"<h1>".$_POST['nom'].", ton score est de ".$score."/20.</h1>";
     
        //Affichage d'un commentaire selon la note obtenu
        if($score<=20 && $score>15){
                        echo"<br><h1>Bravo ! tu es très fort !</h1>";}
        if($score<=15 && $score>10){
                        echo"<br><h1>C'est pas mal du tout.</h1>";}
        if($score<=10 && $score>7){
                        echo"<br><h1>Tu peux faire mieux quant même.</h1>";}
        if($score<=7 && $score>5){
                        echo"<br><h1>C'est vraiment pas terrible tout ça... Il va vraiment falloir réviser...</h1>";}             
        if($score<=5 && $score>=0){
                        echo"<br><h1>Vas apprendre réviser !</h1>";}
     
    	echo'<br/>';
        echo'<br/>';
     
     
        //on recupere la valeur max de l'index de la table classement
        $reqclt="Select MAX(numclass) From classement";
        $resclt=mysql_query($reqclt,$db) or die ("Echec de $reqclt");
        $indexclt=mysql_fetch_array($resclt);
        //$num correspond à l'index le plus grand de la table classement
        $num=$indexclt[0];
     
        //si auccun enregistrement dans la table classement, alors l'index prend 1 sinon l'index augmente de 1   
        if ($num==''){
           $num=1;}
          else{
           $num=$num+1;}  
     
        //enregitrement du score avec le nom et l'index dans la table classement
        $insertscore="Insert Into classement Values (".$num.",'".$_POST['nom']."',".$score.");";
        $resclt=mysql_query($insertscore,$db) or die ("Echec de $insertscore");
     
        //Bouton pour voir le classement   
        echo "  <form method=get action =\"classement.php\">" ;
        echo "</br>";
        echo "</br>";
        echo "</br>";
        echo "  <input type=\"submit\" value=\"Classement\"><br />";
     
    ?>

    Si quelqu'un pouvais me venir en aider, ça sera trop cool parce-que je craque totalement.


    Merci infinimment

  4. #4
    Membre habitué
    Inscrit en
    Février 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 11
    Par défaut
    Rebonsoir,

    Juste pour info,

    J'ai aussi testé avec un autre code qui permet de diviser automatiquement l'affichage du quizz en 4 pages de 5 questions (avec en bas le n° de la page, et des boutons suivant et précédent : précédent 1234 suivant), au lieu de créer 4 pages indépendantes.

    Le résultat est le même.

    Voici le code de la page2.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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    <?php
         //on verifie si la variable $pg est definie, sinon on l'initialise a 1
        if(!isset($_GET['pg'])){
        $pg = 1;
        }else{
        $pg = $_GET['pg'];
        }
     
        //on verifie si la variable qui est censcée etre un numero de page est bien un chiffre,
        //cela evite qu'un gogole vous pirate avec une injection mysql
        if(!is_numeric($pg)){
        $pg = 1;
        }
     
        //connexion mysql
        $link = mysql_connect("localhost", "root", "motdepasse")or die("Erreur de connexion: ".mysql_error($link));
        //chois d'une bdd
        mysql_select_db("quizz", $link)or die("Erreur de connexion: ".mysql_error($link));
     
        //c'est le nb d'enregstrements à affiche par page:
        $enreg_par_pg = 5;
     
        //fonction qui affiche les liens vers les autres pages, ainsi que les liens page suivante et page precedente:
        function pgs($enreg_par_pg, $pg, $link){
        //c'est la requete qui doit permettre le nombre de résultats total qui va etre reparti sur plusieurs pages
        $res = mysql_query("SELECT * FROM questionnaire", $link)or die("Erreur MySQL: ".mysql_error($link));
        $nb_enreg = mysql_num_rows($res);
        //on calcule le nb de pages
        $nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg );
        //numero de page precedente
        $pp = $pg - 1;
        //numero de la page suivante
        $ps = $pg + 1;
     
        //si l'utilisateur se se trouve pas a la page n°1
        if($pg != 1){
        //on affiche un lien page précedente
        //si le script a besoin d'autre variable pour fonctionner ne pas oublier des les transmettre en ajoutant &var=$var...
        echo "<a href='?pg=$pp'>&lt;&lt;page pr&eacute;c&eacute;dente</a>";
        }
     
        //definition d'une variable pour la boucle
        $i=1;
     
        //la syntaxe do...while permet d'effectuer la boucle au moins une fois!
        do{
        //si $i n'est pas egal au numero de la page sur laquelle se trouve l'utilisateur...
        if($i != $pg){
        //...on affiche un lien vers cette page
        //idem: si votre script a besoin d'autre variable pour fonctionner n'oublier pas des les transmettre en ajoutant &var=$var...
        echo "&nbsp;<a href='?pg=$i'>$i</a>\n";
        }else{
        //...sinon on affiche simplement le n° de la page actuelle
        echo "&nbsp;$i&nbsp;";
        }
        //incrémentation de la viariable de la boucle
        $i++;
        //on recommence tant que $i n'atteint pas le numero de la derniere page
        }while($i <= $nb_pg_rounded);
     
        //si l'utilisateur n'est pas a la derniere page...
        if($pg != $nb_pg_rounded){
        //...on affiche un lien page suivante
        //idem: si votre script a besoin d'autre variable pour fonctionner n'oublier pas des les transmettre en ajoutant &var=$var...
        echo "&nbsp;<a href='?pg=$ps'>page suivante&gt;&gt;</a>";
        }
        }
     
        //ici on calcule à partir de quel enregistrement il faut afficher $enreg_par_pg résultats
        $limit = $enreg_par_pg*$pg-$enreg_par_pg;
     
    	echo '<form method="post" action="page3.php">';  
     
        //c'est la requete qui selectione $enreg_par_pg resultats
        $req = mysql_query("SELECT * FROM questionnaire LIMIT $limit, $enreg_par_pg")or die("Erreur MySQL: ".mysql_error($link));
     
        while ($quizz=mysql_fetch_assoc($req)){
                //$num prend la valeur trouvé dans le champs 0
                $num=$quizz['numquest'];
    			//$question prend la valeur trouvé dans le champs 1
                $question=$quizz['question'];
                //$reponse1 prend la valeur trouvé dans le champs 2
                $reponse1=$quizz['rep1'];
                //$reponse2 prend la valeur trouvé dans le champs 3
                $reponse2=$quizz['rep2'];
                //$reponse3 prend la valeur trouvé dans le	champs 3
                $reponse3=$quizz['rep3'];
                //$reponse4 prend la valeur trouvé dans le champs 4
                $reponse4=$quizz['rep4'];
                //$repexact prend la valeur trouvé dans le champs 5
                $repexact=$quizz['rep'];
     
     
                echo '<h3>';
                //Affichage à l'ecran du numero de la question et de la question       
                echo $num.") ".$question;
                echo "<br />";
                //Affichage du choix des réponses avec des radiobutton
                echo '<h3>';
                echo '<input type="radio" name="rep'.$num.'" value="1" />'.$reponse1.'<br />';
    			      echo '<input type="radio" name="rep'.$num.'" value="2" />'.$reponse2.'<br />';
    			      echo '<input type="radio" name="rep'.$num.'" value="3" />'.$reponse3.'<br />';
    			      echo '<input type="radio" name="rep'.$num.'" value="4" />'.$reponse4.'<br />';
                echo "<br />";
                echo "<br />";
                echo '</h3>';
                echo '</h3>';
     
    			}
     
     
        //Renseignement du nom pour enregistrement dans la base
        echo "  Quel est votre nom ?<br />";
        echo $nom="  <input type=\"text\" name=\"nom\" value=\"Moi\" size=\"20\"><br /> ";
        echo '<input type="submit" value="Valider" /></form>';
     
     
     
        //on appelle la fonction précédemment créée pour afficher les liens vers les autres pages, vous pouvez l'appeler plusieurs fois s'il le faut
        echo "<br>";
        pgs($enreg_par_pg, $pg, $link);
        ?>
    La page3.php reste inchangée.

    HELP PLEASE !!!!!

    merci pour votre aide

  5. #5
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, d'après ton code, je ne vois pas d'enregistrement des résultats en session...

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 12h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 11h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 19h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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