Bonjour,
Voila je rencontre un problème depuis plusieurs jours, et c'est pour cela que je sollicite votre aide. En espérant que vous pourriez m'aider ou bien me mettre sur la bonne voie.

En fait voila je vais essayer d'être le plus clair possible,
Dans ma table thème:
-id
-Nom des thèmes,
Niveau qui vont de 1 à 4.

Désolé de la longueur de l'explication j'ai essayé d'être le plus claire possible tout en espérant que vous aurez compris ce que je voulais faire.

Merci d'avance!!!

Ce que je fais

j'aimerai bien afficher les thèmes en fonction du niveau je m'explique,

  • je clique sur un thème il m'affiche une question avec plusieurs propositions,
    -ensuite je clique sur une proposition si c'est correcte on passe au niveau suivant et c'est cela que je n'arrive pas à faire le passage au niveau suivant (les thèmes du niveau 2).

J'ai un model Thème qui récupère aléatoirement 2 thèmes aux hasards:
Model Theme:

    public function getRandomMash() {

            $randomMash =$this->find('first', array(
            'order'=>'rand()'));
    return $randomMash;
     }

    }

J'ai essayé de rajouter dans mon model thème cette ligne qui permet d'afficher les thèmes du niveau 1

 'conditions' => array('Theme.NIVEAU' => 1)));

Mon controller qui verifie si la reponse est correcte:

    public function resultat()
     {
    $exemple = $this->Reponse->find("all", array(
     'fields' => array('Reponse.Reponse'),
     'conditions' => array('Reponse.Reponse' => $this->request->data['valeur'])));

                   if($exemple == true){

         $this->Session->setFlash("Correct","flash", array('class' => 'success'));
         return $this->redirect(array('controller' => 'Themes', 'action' => 'jeux'));

                        }else{

         $this->Session->setFlash("MAUVAIS CHOIX","flash", array('class' => 'error'));
        }

            }

Ce que je veux

Passer au thèmes du niveau suivant

Ce que j'obtiens

Il prend pas compte des niveaux ou bien je reste bloquer au niveau 1.

4 réponses


obenamar
Auteur
Réponse acceptée

ok en fait j'essaie de le mettre dans mon controller Theme sans succès

Controller:

public function jeux() {

    /** on récupère deux elements de la table theme au hasard **/

        $mash1=$this->Theme->getRandomMash();
        $mash2=$this->Theme->getRandomMash();

    /** on en sort les ids correspondants **/
        $id_mash1=$mash1['Theme']['id'];
        $id_mash2=$mash2['Theme']['id']; 
        $id_level = $mash1['Theme']['NIVEAU'];
        $id_level1 = $mash2['Theme']['NIVEAU'];

        //Remarque: ces deux id sont bien uniques, 

    /** on vérifie qu'il s'agit bien de deux themes différents **/
        if ($id_mash1==$id_mash2){
            //sinon on recharge la page
            return $this->redirect(array('action' => 'jeux'));
        }

        if($id_level == $id_level1)
        {

            $this->Session->setFlash("true","flash", array('class' => 'success'));

        }else{

            return $this->redirect(array('action' => 'jeux'));
            $this->Session->setFlash("false","flash", array('class' => 'success'));
        }
Dans ton model

Rajoute la condition sur le niveau

function getRandomByLevel($level){
    ...
}
Dans ton controller

Stocke le niveau courant dans la session ou passe le niveau dans l'url (suivant ce que tu cherche à faire)

obenamar
Auteur

Merci de l'infos je vais essayer,
Mais le problème la première page de mon application doit pour commencer afficher les thèmes du niveau 1

Bonsoir.

Mais le problème la première page de mon application doit pour commencer afficher les thèmes du niveau 1

Il te suffit par exemple de mettre $level à null par défaut et tu vérifies si le level est défini tu traites le niveau spécifié, sinon ce sera le niveau 1.
Je ne vois pas où tu bloques pour ce point.