Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-05-2012 12:24:54

kentinus
Nouveau membre
Date d'inscription: 11-05-2012
Messages: 7

[Résolu] Difficultés avec boucles en MVC

Bonjour,

Je vais essayer de vous expliquer au mieux mon problème: je souhaite traiter le résultat d'un QCM, pour cela je récupère les réponses de l'utilisateur correspondant à la question ainsi que la réponse exacte.

Il faut que je compare la réponse donnée avec la réponse exacte, c'est la que j'ai du mal. Avec ce que j'ai fait la vue s'affiche en plusieurs fois vu que le render() est dans la boucle ... il faut que je le sorte mais si je le sort je n'ai plus que les quest/rep/repexacte de la première question dans ma vue.

Je suis complètement bloqué, help svp !

Controleur :

Code:

public function resultatAction()
    {
        $idQuestions = $_POST['idQuestions'];
        $nbq=count($idQuestions);//nombre de questions
        $i=0;
        
        for ($i=0;$i<$nbq;$i++) {
            $num=$i+1;
            $numrep=$_POST['rep'.$num];//numero de la réponse de l'utilisateur
            
            $ContenuDM = new Application_Model_ContenuDM();
            $result = $ContenuDM->getQuestRep($numrep, $idQuestions[$i]);
            $repexacte = $ContenuDM->getRepexacte($idQuestions[$i]);
             
            $this->view->repexacte = $repexacte;
            $this->view->result = $result;
            $this->render();
             
        }

    }

Modèle:

Code:

 public function getQuestRep($numrep, $idQuestion)
    {
        $sql='SELECT q.question, q.rep'.intval($numrep).'
        FROM question q
        WHERE idQuestion=:idQuestion';
        $result = $this->db->fetchRow($sql,array(':idQuestion'=>$idQuestion));
        $uneQuestionRep = new Application_Model_Contenu();
        $uneQuestionRep->setQuestion($result['question']);
        $uneQuestionRep->setRep($result['rep'.intval($numrep).'']);
        return $uneQuestionRep;
    }
    
    public function getRepexacte($idQuestion)
    {
        $sql='SELECT q.rep
        FROM question q
        WHERE idQuestion=:idQuestion';
        $result = $this->db->fetchRow($sql,array('idQuestion'=>$idQuestion));
    
        $uneQuestionRep = new Application_Model_Contenu();
        $uneQuestionRep->setRep($result['rep']);
    
        return $uneQuestionRep;
    }

Dernière modification par kentinus (11-05-2012 16:29:28)

Hors ligne

 

#2 11-05-2012 12:54:56

kentinus
Nouveau membre
Date d'inscription: 11-05-2012
Messages: 7

Re: [Résolu] Difficultés avec boucles en MVC

J'ai légèrement modifié le code du controleur et de la vue pour que vous compreniez bien mon problème qui est que la vue s'affiche une fois par question:

Controleur:

Code:

 public function resultatAction()
    {
        $idQuestions = $_POST['idQuestions'];
        $nbq=count($idQuestions);//nombre de questions
        $i=0;
        
        for ($i=0;$i<$nbq;$i++) {
            $num=$i+1;
            $numrep=$_POST['rep'.$num];//numero de la reponse de l'apprenant
            
            $ContenuDM = new Application_Model_ContenuDM();
            $result = $ContenuDM->getQuestRep($numrep, $idQuestions[$i]);
            $question = $result->getQuestion();
            $repUtilisateur = $result->getRep();
            
            $repexacte = $ContenuDM->getRepexacte($idQuestions[$i])->getRep();

            $this->view->repexacte = $repexacte;
            $this->view->question = $question;
            $this->view->reputilisateur = $repUtilisateur;
            $this->view->result = $result;

            $this->render();
             
        }

Vue:

Code:

  <table width="70%" border="0">
    <tr>
      <td bgcolor="#66CCFF"> 
        <div align="center"><font size="5" face="Century Gothic, Courier" color="#000000"><strong>Affichage 
          des solutions</strong></font></div></td>
    </tr>
  </table>
  </center>
    <br/>
    <font face="Arial" size="3" color="#800080">
<?php
    echo "Question : " . utf8_encode($this->question) .'</br>';
    echo "Reponse utilisateur : " . utf8_encode($this->reputilisateur).'</br>';
    echo "Reponse exacte : " . utf8_encode($this->repexacte).'</br>';
        if ($this->repexacte == $this->reputilisateur){
            echo "Bonne réponse";
        }
        else{
            echo "Mauvaise réponse";
        }

http://img11.hostingpics.net/pics/36540540ex.png

Hors ligne

 

#3 11-05-2012 15:21:00

kentinus
Nouveau membre
Date d'inscription: 11-05-2012
Messages: 7

Re: [Résolu] Difficultés avec boucles en MVC

Help svp, j'arrive pas a sortir de cette boucle !!!

Hors ligne

 

#4 11-05-2012 15:45:22

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Résolu] Difficultés avec boucles en MVC

Salut, en fait il faudrait que tu sauvegardes d'un moyen comme un autre, par exemple via un tableau que tu initialise avant la boucle et dans la boucle du remplis pour chaque réponse.

A la fin de ta boucle tu as donc un tableau rempli avec toutes tes réponses et tu transmet le tableau à la vue.

Hors ligne

 

#5 11-05-2012 16:28:51

kentinus
Nouveau membre
Date d'inscription: 11-05-2012
Messages: 7

Re: [Résolu] Difficultés avec boucles en MVC

Merci beaucoup !!
J'ai enfin réussi donc je poste le code si ça peut intéresser :

Controleur:

Code:

 public function resultatAction()
    {
        $idQuestions = $_POST['idQuestions'];
        $nbq=count($idQuestions);//nombre de questions
        $i=0;
        $tab = array();
        
        foreach ($idQuestions as $i => $value){
            $num=$i+1;
            $numrep=$_POST['rep'.$num];//numero de la reponse de l'apprenant
            
            $ContenuDM = new Application_Model_ContenuDM();
            $questRep = $ContenuDM->getQuestRep($numrep, $value);
            
            $tab[] =$questRep;

        }
        $this->view->nbq = $nbq;
        $this->view->tableau = $tab;
        $this->render();
    }

vue:

Code:

foreach($this->tableau as $unTab){
echo $unTab->getQuestion();
echo $unTab->getRepUtilisateur();
echo $unTab->getRep();
.
.
.
}

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages