Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2012, 07h33   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Réunion

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 35
Points : 12
Points : 12
Par défaut probleme de lecture dans BDD

Bonjour,
J'ai crée une table qui contient plusieurs fois la meme information, et dans mon controlleur j'ai fait un fetchAll() pour récupérer ces informations mais comment est-ce que je dois procéder pour ne pas avoir de doublon ? et je ne sais pas quoi mettre dans mon model.
Voici mon controlleur :
Code :
1
2
3
4
5
public function rubriqueAction()
    {
		$rubrique = new Application_Model_DbTable_Rubrique();
		$this->view->rubrique = $rubrique->fetchAll();
    }
brice97431 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 19h19   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Bonjour,
Quand tu parles de doublon tu dois vouloir parler d'une colonne en particulier, j'espère pour toi que ce ne sont pas les rows complètes qui sont en doublon.

Il te faut donc dans ton modèle Application_Model_DbTable_Rubrique créé une méthode te retournant ce que tu veux, dans celle ci il faudra que tu ajoute la contrainte distinct sur la colonne voulu et tu passe la construction de ta requête en argument à ton fetchALL puis tu retournes le résultat.

Cela va être du genre suivant :
Code :
1
2
3
4
 
$where = $this->select();
$where->...; (ton distinct devra être à ce niveau)
return $this->fetchAll($where);
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 08h24   #3
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Réunion

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 35
Points : 12
Points : 12
merci de ton aide mais en fait j'ai tout mis dans mon controlleur car je sais pas comment l'appeler si je crée une méthode dans mon model , je te montre mon code si tu peux me dire quoi laisser dans mon controlleur et quoi mettre exactement dans le model ça serait cool

COntrolleur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
class UserController extends Zend_Controller_Action
{ 
    public function rubriqueAction()
    {
		$db =Zend_Registry::get('dba');
		$req = $db->select()
				->distinct()
				->from('zone', 'page');
		$result = $db->fetchAll($req);
		Zend_Debug::dump($result);
 
    }
}
brice97431 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 08h45   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Si tu créés une méthode du genre dans ton modèle:
Code :
1
2
3
4
 
public function selectAllRow() {
...
}
Dans ton controller tu l'appel ainsi :
Code :
1
2
3
 
Tu commence par initialiser ton modèle
$tonmodel->selectAllRow();
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h29   #5
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Réunion

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 35
Points : 12
Points : 12
voilà comment j'ai fait

Controlleur :
Code :
1
2
3
4
5
6
public function rubriqueAction()
    {
		$rubrique = new Application_Model_DbTable_Rubrique();
		$this->view->rubrique = $rubrique->obtenirRubrique();
 
    }
Model :
Code :
1
2
3
4
5
6
7
8
9
10
public function obtenirRubrique()
	{
		$db =Zend_Registry::get('dba');
		$req = $db->select()
				->distinct()
				->from('zone', 'page');
		$result = $db->fetchAll($req);
		Zend_Debug::dump($result);
 
	}
mais j'ai une erreur qui me dit l'adpater n'a pas été trouver pour le model demander
brice97431 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 13h21   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Vu que tu es dans un modele, tu n as pas besoin de récupérer dba dans le registre utilise $this comme je l ai indiqué dans mon post
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 07h07   #7
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Réunion

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 35
Points : 12
Points : 12
alors j'ai fait comme tu m'as dit mais j'ai une erreur de "unexpected T_VARIABLE" tu pourras peut etre m'indiquer la faute

Controlleur:
Code :
1
2
3
4
5
6
 public function rubriqueAction()
    {		
		$rubrique = new Application_Model_DbTable_Rubrique();
		$this->view->rubrique = $rubrique->obtenirRubrique();
 
    }
Model:
Code :
1
2
3
4
5
6
7
public function obtenirRubrique()
	{
		$where = $this->select();
		$where->from('zone', 'page');
 
		$return $this->fetchAll($where);		
	}
brice97431 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 08h16   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 680
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 680
Points : 1 044
Points : 1 044
Ton erreur c est return et non $return.

Il serait bon de te relire des erreurs comme celle ci tu devrais pouvoir les régler seul
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 08h25   #9
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Réunion

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2011
Messages : 35
Points : 12
Points : 12
j'avais mis un $ devant return , tout marche bien et merci encore pour ton aide 5h4rk
brice97431 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web