Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-04-2009 13:45:35

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

[Résolu][Zend_Paginator][1.7] Problème de limit record

Bonjour, voilà jusqu'à présent, je suis arrivé à évoluer avec Zend Framework avec la doc, mais la je cale.

Mon problème est que la pagination fonctionne à peut prêt sauf qu'elle ne m'affiche pas le nombre de données demandés mais toutes.

Je vais donc montrer les bouts de code qui semblent être les fautifs.

Controller

Code:

       //Pagination
        $dbPagi = new Posts();
        $selectPagi = $dbPagi->select();
        $paginator  = Zend_Paginator::factory($selectPagi);
        //Paramètres pagination
        $paginator->setCurrentPageNumber($this->_getParam('page', 1))
                  ->setPageRange(10)
                  ->setItemCountPerPage(4);
        
        //Envoi à la vue
        $this->view->paginator = $paginator;

Model

Code:

class Posts extends Zend_Db_Table_Abstract{
    protected $_name = 'post_news';
}

En attente de réponse !

Seazer

Dernière modification par Seazer (28-04-2009 20:37:56)

Hors ligne

 

#2 25-04-2009 16:47:21

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Qu'est-ce que tu veux dire par TOUTES les données ? Tu peux nous montrer ce qui est sortie au final ? Ha et bienvenue sur le forum smile

Hors ligne

 

#3 25-04-2009 17:02:37

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Merci, je n'hésiterai pas à aider les autres sur les problèmes que j'ai rencontrés et résolut.

Pour l'affichage, il ne me limite pas le nombre d'articles, ici à 4 (setItemCountPerPage(4)). Il me les affiche tous.

Par exemple, il y a 13 articles.

ceil(13/4) = 4 (Il m'affiche bien les 4 pages dans la vue de la pagination, donc le paginator sais combien de pages il faut et combien d'articles sont dans la BDD).

Sauf que chaque page est identique, avec les 13 articles de la BDD. (Il n'en met pas que 4 par page).

Dernière modification par Seazer (25-04-2009 17:18:50)

Hors ligne

 

#4 25-04-2009 20:04:03

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Ha oki, maintenant je comprends très bien ton problème...c'est bizarre parce que tu set bien le nombre d'élément à afficher et de toute façon, par défault il est à 10 donc si tu aurais mal fait, il t'aurais afficher quand même 10 éléments maximum...

Code:

$paginator->setCurrentPageNumber($this->_getParam('page', 1))

Ya cette ligne qui m'intrigue un peu...peut-être qu'il sait combien de pages il doit te donner mais...peut-être qu'il sait pas à qu'elle page il se trouve et décide de tout afficher en même temps...d'où vient le page en paramètre ? Il est égale à quoi ? Et le 1 c'est le défault ?

Enfin, j'esseye de t'aider mais je n'ai pas eu à utiliser la paginator encore, à venir smile Mais c'est bon en cherchant ton problème, je le comprends déjà un peu mieux ! (Zend_paginator)

Dernière modification par probitaille (25-04-2009 20:05:30)

Hors ligne

 

#5 25-04-2009 21:32:45

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Si, la paginator sait ou il se trouve, si je lui demande la page deux, il me désactive le lien 2.

$this->_getParam('page', 1) C'est le paramètre passé par l'url et si il ne le trouve pas ben il prend pour valeur 1.

Voilà ma route au cas ou :

Code:

//Router News Pagi
$routeNewsPagi = new Zend_Controller_Router_Route_Regex(    
                     'news/page-(\d+)\.html',
            array('module'     => 'news',
                     'controller'  => 'Index',
                     'action'       => 'index'),
            array(1 => 'page'),
                     'news/page-%d.html');

J'ai vu que : setCurrentPageNumber     Règle le numéro de la page courante (par défaut à 1).

Il n'a donc pas besoin de la valeur par défaut de $this->_getParam('page'), mais cela ne change rien au problème.

Dernière modification par Seazer (25-04-2009 21:46:16)

Hors ligne

 

#6 25-04-2009 23:08:42

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Tu as surement vérifié ce que te sortais $dbPagi->select(); ? Peut-être que le problème est ailleurs mais...peu importe les données que tu devrais récolter avec la bd...sa explique pas le truc de l'affichage de tous les articles dans la même page...

Hors ligne

 

#7 25-04-2009 23:57:04

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Oui rien n'explique qu'il fasse l'affichage de tout les articles.

Quand j'aurai le temps, je le referai de zéro pour voir si cela corrige le problème.

Hors ligne

 

#8 26-04-2009 21:32:07

wiwidumi
Membre
Date d'inscription: 14-04-2009
Messages: 19

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Salut,

Remplace:
$paginator ->setItemCountPerPage(4);
Par:
$paginator ->setItemCountPerPage($this->_getParam('par', 4));

Dans ta vue tu fais bien un foreach sur $paginator ?

Si cela affiche tout, je ne vois pas trop où peut être le problème.

Sinon essaye sans le Route, normalement il n y a pas de raison que cela ne fonctionne pas.

Dernière modification par wiwidumi (26-04-2009 21:34:23)

Hors ligne

 

#9 27-04-2009 17:04:34

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Ce que tu me demande revient au même.

Si ($this->_getParam('par') n'existe pas, la variable va prendre pour valeur 4.

Ce qui revient au même de ce que j'ai fais.

Pour ma vue, la voilà :

Code:

<?php if ($this->pageCount): ?>
<div id="paginationControl">

<!-- Previous page link --> 
<?php if (isset($this->previous)): ?> 
  <a href="<?php echo $this->url(array('page' => $this->previous)); ?>">&lt; <?php echo "précédent"; ?></a> | 
<?php else: ?> 
  <span class="disabled">&lt; <?php echo "précédent"; ?></span> | 
<?php endif; ?> 

<!-- Numbered page links -->
<?php foreach ($this->pagesInRange as $page): ?> 
  <?php if ($page != $this->current): ?>
    <a href="<?php echo $this->url(array('page' => $page)); ?>"><?php echo $page; ?></a> | 
  <?php else: ?>
    <span class="current"><?php echo $page; ?></span> | 
  <?php endif; ?>
<?php endforeach; ?>

<!-- Next page link --> 
<?php if (isset($this->next)): ?> 
  <a href="<?php echo $this->url(array('page' => $this->next)); ?>"><?php echo "suivant" ?> &gt;</a>
<?php else: ?> 
  <span class="disabled"><?php echo "suivant" ?> &gt;</span>
<?php endif; ?> 
</div> 
<?php endif; ?>

C'est celle de la doc en attendant que cela fonctionne.

Dernière modification par Seazer (27-04-2009 17:15:37)

Hors ligne

 

#10 28-04-2009 13:06:44

Seazer
Membre
Date d'inscription: 25-04-2009
Messages: 25

Re: [Résolu][Zend_Paginator][1.7] Problème de limit record

Voilà problème résolut.

J'ai en faite réfléchi comment il pouvait me donner tout les résultats.

Car en faite, comme un idiot j'ai fais un foreach du select() et pas du paginator.

Encore merci de votre réactivité ainsi que votre aide.

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