Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-07-2012 00:23:12

Chti_Pingu
Nouveau membre
Date d'inscription: 19-07-2012
Messages: 2

Zend et variable sql

Bonjour à tous,

Je tenais à partager avec vous un problème que je rencontre.
Pour faire simple, mon but est, à partir de plusieurs tables, monter un classement (1er, 2eme, 3eme...) en fonction du nombre de votes réalisés par des utilisateurs ce qui se traduirait par cette requête SQL :

SET @var := 0;
SELECT @var := @var +1 AS pos, votes,pseudo FROM (
   SELECT count(note) as votes,pseudo from user_votes group by pseudo order by votes DESC) AS classement;

Seulement voilà, je souhaiterais "construire" cette requête avec l'outil Zend_Db_Select et j'éprouve quelques difficultés, notamment dans la déclaration de ma variable. Voilà où j'en suis :

Code:

[lang=php]public function getNewClassement() {

$this->_db->setFetchMode(Zend_Db::FETCH_OBJ);
$first = $this->_db->select()
                   ->from ('user_votes', array ('votes' => 'count(note)', 'pseudo'))
                   ->group ('pseudo')
                   ->order('votes DESC');

$second= $this->_db->select(array('pos' => '@nr := @nr +1'))
               ->from ($first, array ( 'moyenne', 'votes', 'pseudo'));

return $second;
}

Le container :

Code:

[lang=php] public function indexAction() {
        $dbUser = new Db_User();
        $selectClassement = $dbUser->getNewClassement();

        $page     = Zend_Paginator::factory($selectClassement);
        $page->setPageRange(20);
        $page->setCurrentPageNumber($this->_getParam('page', 1));
        $page->setItemCountPerPage($this->_getParam('par', 10));

        $this->view->listeItems = $page;
    }

Et le view :

Code:

[...]
<?php
foreach ($this->listeItems as $item) { 
?>
     <td class="style15"> <?php echo $item->pos; ?></td>
<?php } ?>

Forcément, je n'arrive pas à afficher "pos"... sad
Pouvez-vous m'aiguiller ou me proposer une solution ?
En vous remerciant par avance.

Cdt

Dernière modification par Chti_Pingu (20-07-2012 00:25:14)

Hors ligne

 

#2 20-07-2012 11:21:30

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Zend et variable sql

bonjour,

apparemment au niveau de votre modèle les résultats de votre requête ne sont à priori pas parcouru car absence d'une méthode comme fetchAll().

Hors ligne

 

#3 20-07-2012 14:49:20

Chti_Pingu
Nouveau membre
Date d'inscription: 19-07-2012
Messages: 2

Re: Zend et variable sql

Bonjour,

Si si, il y a un fetch objet (comme je travaille en objet) :
$this->_db->setFetchMode(Zend_Db::FETCH_OBJ);

Dans ma page view, si je mets:
     <td class="style15"> <?php echo $item->votes; ?></td>

j'obtiens bien un résultat. Ce qui n'est pas le cas avec "pos".

Hors ligne

 

#4 29-07-2012 23:49:36

wd79
Nouveau membre
Lieu: Mauze sur le mignon
Date d'inscription: 29-07-2012
Messages: 3

Re: Zend et variable sql

Bonjour

une solution mettre un compteur dans votre boucle d'affichage et oublier votre seconde requette
<?php
$ctp=1;
foreach ($this->listeItems as $item) {
?>
     <td class="style15"> <?php echo $cpt++ ?></td>
<?php } ?>

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