Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Pagination

Posted by wam_baloo on 05/19/2008 17:33

Bonjour,

je sais qu'il existe déjà un moyen de faire une pagination sur un DaoCrud. Cependant je n'ai rien trouvé concernant la mise en place de celle-ci sans passer par le DaoCrudController. Je me permets donc de mettre ici un bout de code pour ceux qui souhaitent intégrer une pagination à partir d'objets récupérer en base via jDao uniquement.

Dans mon exemple, j'affiche deux éléments par page.

        /**
        * PAGINATION MANUELLE
        */
        //nombre d'enregistrement par page
        $nb_enr = 2;
        //nombre de pages possibles
        $factory = jDao::get('application');
        $conditions = jDao::createConditions();
        $conditions->addItemOrder('app_code');
        $nb_app = $factory->countBy($conditions);
        if ($nb_app%$nb_enr == 0){
        	$nb_pages = intval($nb_app/$nb_enr);
        }else{
        	$nb_pages = intval($nb_app/$nb_enr) + 1;
        }
	       //calcul pour la pagination
        $offset = $this->param('offset')?$this->param('offset'):0;
        if ($offset < 0){
        	$offset = 0;
        }elseif ($offset > ($nb_pages*$nb_enr)-$nb_enr){
        	$offset = ($nb_pages*$nb_enr)-$nb_enr;
        }
        $rep->body->assign('nb_pages', $nb_pages);
        $rep->body->assign('offset', $offset);
        /**
         * FIN DE PAGINATION
         */

Voici la requête jDao lancée juste aprés :

 $toto = $factory->findBy($conditions, $offset, $nb_enr);

Et voici mon bout de template pour afficher un lien vers la première page, un lien vers la page précédente, un lien vers la page suivante et un lien vers la dernière page :

 <div id='pager'>
 <a href='{jUrl 'application~application:liste', array('offset' => 0)}'> << </a>
 <a href='{jUrl 'application~application:liste', array('offset' => $offset-$nb_enr)}'> < </a>
 <a href='{jUrl 'application~application:liste', array('offset' => $offset+$nb_enr)}'> > </a>
 <a href='{jUrl 'application~application:liste', array('offset' => ($nb_pages*$nb_enr)-$nb_enr)}'> >> </a>
 </div>

Voila j'espère que ça pourra aider certaines personnes. Peut être ce genre de code existe déjà auquel cas, merci de supprimer mon post qui ne sert à rien ;)

See Ya !

 
Page
  1. Pagination