Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-06-2008 17:29:05

squallmat
Membre
Date d'inscription: 25-06-2008
Messages: 19

[résolu][Zend_Db][1.5.2]requête pour gestion de news

Bonjour, voilà j'utilise ZF pour afficher des news, donc il me faut un "affichage inversé", de manière à afficher en premier la dernière news.

J'ai ceci en controller :

Code:

public function indexAction() 
    { 
        $this->view->title = "Informations";

        $news = new News();
        $this->view->news = $news->findInverse();
    }

en modèle :

Code:

 public function findInverse()
    {
        $result = $this->getAdapter()->query('SELECT * FROM news ORDER BY id DESC');
        return $result->fetchAll();
    }

en vue :

Code:

<!DOCTYPE html PUBLIC "-//W3C//Dtr XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/Dtr/xhtml1-strict.dtr">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">  
    <head>
    </head>
    <body>
        <p><a href="<?php echo $this->url(array('controller'=>'index',
                'action'=>'ajouter')); ?>">Ajouter une information</a></p>
        <?php foreach($this->news as $news) : ?>
            <div class="post">
                <h1 class="title"><?php echo $this->escape($news->titre);?></h1>
                <p class="byline"><small>
                    Posté le <?php echo $this->escape($news->date);?>
                    <a href="<?php echo $this->url(array('controller'=>'index',
                        'action'=>'modifier', 'id'=>$news->id));?>">Modifier</a>
                    <a href="<?php echo $this->url(array('controller'=>'index',
                        'action'=>'supprimer', 'id'=>$news->id));?>">Supprimer</a>
                </small></p>
                <div class="entry"><p><?php echo $this->escape($news->contenu);?></p></div>
            </div>
        <?php endforeach; ?>
    </body>
</html>

Or à l'affichage j'ai une succession d'erreur du type :
Notice: Trying to get property of non-object in C:\Program Files\EasyPHP 2.0b1\www\application\views\scripts\index\index.phtml on line 10

Je ne comprends pas ce qui ne va pas, lorsque je fais un fetchAll traditionnel avec le même code dans la vue tout se passe bien mais pas là, si vous pouviez m'aider parceque là je bloque.

Dernière modification par squallmat (26-06-2008 14:56:09)

Hors ligne

 

#2 25-06-2008 17:47:14

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

A vue de nez je dirais que ta fonction te rend un array et pas un objet.

fait un print_r  dans ta vue de this->news pour vérifier...


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#3 25-06-2008 17:56:59

squallmat
Membre
Date d'inscription: 25-06-2008
Messages: 19

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

le print_r me renvoie :

Array ( [0] => Array ( [id] => 7 [titre] => zefdzef [date] => 0000-00-00 [contenu] => dfzefe ) [1] => Array ( [id] => 6 [titre] => seconde news ààà [date] => 0000-00-00 [contenu] => test ééé ) [2] => Array ( [id] => 1 [titre] => Ouverture du site [date] => 2008-06-10 [contenu] => et voilà le site est là ) )

edit : je me suis trompé en écrivant le code tout à l'heure ^^

Dernière modification par squallmat (25-06-2008 18:59:44)

Hors ligne

 

#4 26-06-2008 01:40:43

squallmat
Membre
Date d'inscription: 25-06-2008
Messages: 19

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

Personne pour m'aider ? sad

Hors ligne

 

#5 26-06-2008 08:43:52

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

c'est siimple en fait, ta fonction te renvoie un array et plus un objet,

donc dans ta vue, au lieu de faire

Code:

$news->titre

tu dois faire

Code:

$news['titre']

La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

#6 26-06-2008 10:04:28

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

Salut,
Ce que tu peux faire aussi, c'est lors de ton instanciation de ta database déclarer comme quoi tout retour de donnée doit être un objet.
Exemple:

Code:

...
$db = Zend_Db::factory($config->database->adapter, $config->database->params->toArray());
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$db->query("SET NAMES 'utf8'");
...

A+

Hors ligne

 

#7 26-06-2008 10:50:30

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

Si ta classe News "extends" Zend_Db_Table", je crois que tu pourrais coder ta méthode findInverse() ainsi

Code:

public function findInverse()
    {
        return $this->fetchAll(null/*where*/, /*orderby*/ 'id DESC');
    }

Hors ligne

 

#8 26-06-2008 14:54:18

squallmat
Membre
Date d'inscription: 25-06-2008
Messages: 19

Re: [résolu][Zend_Db][1.5.2]requête pour gestion de news

Parfait ça marche, j'ai utilisé la solution de Mr.MoOx ^^ (je n'ai pas testé les autres solutions désolé :p)
Mais merci beaucoup pour vos réponses tout le monde mon problème est réglé smile , je suis encore débutant en php je n'avais pas pensé au $news['titre'] mais c'est vrai que maintenant ça me paraît bien stupide :p

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