Passer au thème suivant

Par obenamar, il y a 10 ans


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,

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

Grafikart, il y a 10 ans

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, il y a 10 ans

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

Lartak, il y a 10 ans

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.

obenamar, il y a 10 ans

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')); }