impossible de passer à la question suivante dans mon QCM

Petit nouveau ! | 6 Messages

12 juin 2014, 15:58

Bonjour,

Dans le cadre de mon projet de fin d'étude et donc de ma soutenance, j'ai besoin que mon projet soit opérationnel sauf que la lorsque je clique sur passer à la question suivante j'ai 2 soucis (pour le moment ^^). La page refresh sur la question 1 donc il me dit qu'une réponse est enregistré et je suis bloqué.
Je vous joins le code :
Code :
case 'enregistrer_reponse_QUIZZ' :
        $idQuizz = $_POST['idQUIZZ'];   
        $idQcm = $_POST['idQCM'];       
        $idQuestion = $_POST['idQuestion'];     
        $numQuestion = $_POST['numQuestion'];
        // $IdUtilisateur = $_POST['IdUtilisateur'];
        $req_reponses = "       SELECT  t_reponses.IdReponse IdReponse, 
                t_reponses.NumeroReponse NumeroReponse, 
                t_reponses.DefautReponse DefautReponse
                FROM    db_quizz.tb_reponses t_reponses
                WHERE   t_reponses.IdQuestion = '".$idQuestion."'
                ORDER 
                BY              t_reponses.NumeroReponse ASC";
        // echo $req_reponses;                          
        $res_reponses = mysql_query($req_reponses);                                                                     
        $ReponseCheck = array();
        $ReponseDefaut = array();
        while($row_reponses = mysql_fetch_array($res_reponses)){
                $ReponseCheck[$row_reponses['IdReponse']] = isset($_POST['RESPONSE_CHECKBOX_'.$row_reponses['NumeroReponse'].'']) ? 1 : 0;
                $ReponseDefaut[$row_reponses['IdReponse']] = $row_reponses['DefautReponse'];                                    
        }
        $NbCheck = array_sum($ReponseCheck);
        if($NbCheck >= 1){
                $sel_responses_user = " SELECT  DISTINCT(t_reponses_user.NumeroQuestion) NumeroQuestion
                        FROM    db_quizz.tb_reponsesusers t_reponses_user
                        WHERE   t_reponses_user.IdQCM = '".$idQcm."'
                        ORDER BY                t_reponses_user.NumeroQuestion DESC 
                        LIMIT  1 ";
                // echo $sel_responses_user;
                $res_responses_user = mysql_query($sel_responses_user);
                $row_responses_user = mysql_fetch_array($res_responses_user);
                if($row_responses_user['NumeroQuestion'] < $numQuestion){
                        $resultatReponse = 1;
                        $nbTotalReponse = 0;
                        foreach($ReponseCheck AS $IdReponse => $Reponse){
                                // Répondu 1 => Attendu 1 = 1
                                $Resultat = ($Reponse == $ReponseDefaut[$IdReponse]) && ($ReponseDefaut[$IdReponse] == 1) ?  1 : 0;
                                // Répondu 0 => Attendu 1 = -1
                                $Resultat = ($Reponse != $ReponseDefaut[$IdReponse]) && ($ReponseDefaut[$IdReponse] == 1) ? -1 : $Resultat;                                                     
                                // Répondu 1 => Attendu 0 = -1
                                $Resultat = ($Reponse != $ReponseDefaut[$IdReponse]) && ($Reponse == 1) ? -1 : $Resultat;                                                       
                                // echo $Reponse." >> ".$ReponseDefaut[$IdReponse]." == ".$Resultat."<br>";
                                if($Resultat == -1) { $resultatReponse = 0;}                                            
                                $ins_response = "       INSERT 
                                        INTO    db_quizz.tb_reponsesusers(
                                                IdQuizz, 
                                                IdQCM, 
                                                IdQuestion, 
                                                IdReponse, 
                                                IdUtilisateur, 
                                                NumeroQuestion, 
                                                Reponse, 
                                                Defaut, 
                                                Resultat
                                        ) 
                                        VALUES (
                                                '".$idQuizz."', 
                                                '".$idQcm."', 
                                                '".$idQuestion."',  
                                                '".$IdReponse."', 
                                                '".$IdUtilisateur."', 
                                                '".$numQuestion."', 
                                                '".$Reponse."', 
                                                '".$ReponseDefaut[$IdReponse]."', 
                                                '".$Resultat."'
                                        ) ";
                                        // echo $ins_response;
                                        if(mysql_query($ins_response)){
                                                $nbTotalReponse+=1;
                                        }
                                }
                                if($nbTotalReponse == mysql_num_rows($res_reponses)){
                                        $etatQCM = 3;
                                        $ins_note = "   INSERT INTO     db_quizz.tb_notes(
                                                IdQuizz, 
                                                IdQCM, 
                                                IdQuestion, 
                                                IdUtilisateur, 
                                                NumeroQuestion, 
                                                Note
                                        )
                                        VALUES (
                                                '".$idQuizz."', 
                                                '".$idQcm."', 
                                                '".$idQuestion."',
                                                '".$IdUtilisateur."', 
                                                '".$numQuestion."', 
                                                '".$resultatReponse."'
                                        ) ";
                                        // echo $ins_note;
                                        if(mysql_query($ins_note)){
                                                $etatQCM = 3;
                                                $up_quizz = "   UPDATE  db_quizz.tb_quizzusers t_quizzusers
                                                        SET     t_quizz_user.NumQuestionQCM = '".$numQuestion."',  
                                                                t_quizz_user.EtatQCM = '".$etatQCM."' 
                                                        WHERE   t_quizz_user.IdQCM = '".$idQcm."' ";
                                                // echo $up_quizz;
                                                mysql_query($up_quizz);
                                        }
                                }
                        }
                        else {                                          
                                $_SESSION['message'] = 'Question '.$row_responses_user['NumeroQuestion'].' est déjà enregistré';
                        }
                }
                else {
                        $_SESSION['message'] = 'Merci de choisir au minimun une réponse possible';
                }
                include 'vues/dashboard/restart_quizz.php';
        break;
l'appel de la fonction :
$req_quizz = "SELECT    t_quizz.IdQuizz IdQUIZZ, 
        t_quizz.TitreQuizz TitreQuizz, 
        t_quizz.DescriptionQuizz DescriptionQuizz,
        t_quizz_user.IdQCM IdQCM
        FROM    db_quizz.tb_quizz t_quizz,
                db_quizz.tb_quizzusers t_quizz_user
        WHERE   t_quizz.IdQuizz = t_quizz_user.IdQuizz
        AND t_quizz_user.IdQCM = '".$idQcm."'";
// echo $req_quizz;     
$sql_quizz = mysql_query($req_quizz);                                           
$row_quizz = mysql_fetch_array($sql_quizz);
echo '<div class="well well-small">';
echo '<h2>QUIZZ - '.$row_quizz['TitreQuizz'].'</h2>';
echo '</div>';  
$req_avancement = " SELECT      t_quizz.NbQuestionQuizz NbQuestionQuizz,
        t_quizz.CorrigerQuizz CorrigerQuizz,
        t_quizz_user.DateDebutQCM DateDebutQCM,
        t_quizz_user.DateFinQCM DateFinQCM,
        t_quizz_user.NumQuestionQCM NumQuestionQCM,
        t_quizz_user.EtatQCM EtatQCM
        FROM    db_quizz.tb_quizz t_quizz,
        db_quizz.tb_quizzusers t_quizz_user
        WHERE   t_quizz.IdQuizz = t_quizz_user.IdQuizz AND 
        t_quizz_user.IdQCM = '".$row_quizz['IdQCM']."' ";
// echo $req_avancement;
$sql_avancement =  mysql_query($req_avancement);
$row_avancement = mysql_fetch_array($sql_avancement);
if($row_avancement['EtatQCM'] <= 3){
        if(mysql_num_rows($sql_avancement) == 0){
                echo '<div class="alert alert-error">';
                echo '<h3>Aucun QUIZZ</h3>';
                echo '</div>';
        }
        else{
                echo '<div class="well well-mini">';
                echo '<h3>Etat d\'avancement du QUIZZ</h3>';                                            
                echo '<table class="table">';
                echo '<tr>';
                echo '<th>Date de<br>début</th>';
                echo '<th>Date de<br>fin</th>';
                echo '<th>Nombre de<br>questions répondues</th>';
                echo '<th>Etat</th>';
                echo '<th>Affichage<br>du corrigé</th>';                                                               
                echo '</tr>';
$trClassColor = in_array($row_avancement['EtatQCM'], array(2, 3)) ? 'warning' : 'success' ;
echo '<tr class="'.$trClassColor.'">';
echo '<td>'.$row_avancement['DateDebutQCM'].'</td>';
echo '<td>'.$row_avancement['DateFinQCM'].'</td>';
echo '<td>'.$row_avancement['NumQuestionQCM'].'/'.$row_avancement['NbQuestionQuizz'].'</td>';
echo '<td>'.$liste_etats_qcm[$row_avancement['EtatQCM']]['Description'].'</td>';
$typeBtn = $row_avancement['CorrigerQuizz'] == 1 ? "label-success" : "label-important";
echo '<td><span class="label label-mini '.$typeBtn.'" style="width: 20px;">'.($row_avancement['CorrigerQuizz'] == 1 ? 'Oui' : 'Non').'</span>';
echo '</tr>';
echo '</table>';                                                        
echo '</div>';
}
$numQuestion = ($row_avancement['NumQuestionQCM']+1);
$limiteNbQuestions = $row_avancement['NbQuestionQuizz'];
if(isset($_SESSION['message']) && $_SESSION['message']!='')     {
        echo '<div class="alert alert-error">';
        echo '<h4>Attention!</h4>';
                echo $_SESSION['message'];
                echo '</div>';
}
                if(($numQuestion <= $limiteNbQuestions))
        {
                echo '<form action="index.php" method="POST">';
                echo '<div class="well" style="background-color:#DFF0D8;">';
 
                $sel_question = "       SELECT  t_questions.IdQuestion IdQuestion,
                                                                        t_questions.NumeroQuestion NumeroQuestion, 
                                                                        t_questions.DescriptionQuestion DescriptionQuestion
 
                                                        FROM    db_quizz.tb_questions t_questions
 
                                                        WHERE   t_questions.IdQuizz = '".$row_quizz['IdQUIZZ']."' AND 
                                                                        t_questions.NumeroQuestion = '".$numQuestion."' ";
                // echo $sel_question;                          
                $res_question = mysql_query($sel_question);             
                $row_questions = mysql_fetch_array($res_question);
 
                echo '<h4>Q '.$row_questions['NumeroQuestion'].' - <i>'.$row_questions['DescriptionQuestion'].'</i></h4>';
                echo '<br>';
 
                $req_reponses = "       SELECT  t_reponses.NumeroReponse NumeroReponse, 
                                                                        t_reponses.DescriptionReponse DescriptionReponse
 
                                                        FROM    db_quizz.tb_reponses t_reponses
 
                                                        WHERE   t_reponses.IdQuestion = '".$row_questions['IdQuestion']."'
 
                                                        ORDER 
                                                        BY              t_reponses.NumeroReponse ASC ";
                // echo $req_reponses;                          
                $res_reponses = mysql_query($req_reponses);                                                                     
 
                while($row_reponses = mysql_fetch_array($res_reponses))
                {
                        echo '<blockquote>';
                        echo '<label class="checkbox">';
                        echo '<input type="checkbox" name="RESPONSE_CHECKBOX_'.$row_reponses['NumeroReponse'].'">';
                        echo '<h5>R '.$row_questions['NumeroQuestion'].'.'.$row_reponses['NumeroReponse'].' - <i>'.$row_reponses['DescriptionReponse'].'</i></h5>';
                        echo '</label>';                                                                                
                        echo '</blockquote>';                                                   
                }                                                       
 
                echo '<input type="hidden" name="idQUIZZ" value="'.$row_quizz['IdQUIZZ'].'"/>';
                echo '<input type="hidden" name="idQCM" value="'.$row_quizz['IdQCM'].'"/>';
                echo '<input type="hidden" name="idQuestion" value="'.$row_questions['IdQuestion'].'"/>';
                echo '<input type="hidden" name="numQuestion" value="'.$row_questions['NumeroQuestion'].'"/>';
 
                echo '<input type="hidden" name="VUE" value="'.$vues.'" />';
                echo '<input type="hidden" name="ACTION" value="enregistrer_reponse_QUIZZ" />';
                echo '<input type="submit" class="btn btn-success" value="Passer à la question suivante"/>';
 
                echo '</form>';
                echo '</div>';
        }
        else
        {                                       
                echo '<form action="index.php" method="POST">';
                echo '<div class="alert alert-success">';
 
                echo '<input type="hidden" name="idQUIZZ" value="'.$row_quizz['IdQUIZZ'].'"/>';
                echo '<input type="hidden" name="idQCM" value="'.$row_quizz['IdQCM'].'"/>';
 
                echo '<input type="hidden" name="VUE" value="'.$vues.'" />';
                echo '<input type="hidden" name="ACTION" value="finaliser_reponse_QUIZZ" />';
                echo '<input type="submit" class="btn btn-success" value="Terminer"/>';
 
                echo '</div>';
                echo '</form>';                                         
        }
}

De plus il me dit que la variable IdUtilisateur n'est pas défini et je ne comprends pas pourquoi , j'ai mis en commentaire ma déclaration que j'avais rajouté et qui ne me semblait pas nécessaire mais quand je rajoute ma déclaration il bloque de plus belle.

Merci d'avance.

Eléphant du PHP | 95 Messages

13 juin 2014, 09:46

Le double poste n'est pas utile...
ça serait bien si tu pouvait nous joindre l'éventuelle erreur PHP qui s'affiche avec ligne concernée ect..
Et quel est le code html généré une fois que ta réponse est enregistrée et que tu es bloqué? (clic droit -> afficher les sources)
La b!te et le couteau sont bien souvent les meilleurs outils...mais aussi et surtout les seuls qui sont toujours à disposition!!