Bonjours tous le monde,

je vien vers vous car j'ai un souci de logique,
sur 2 req pdo avec limit et de plus avec le systeme de pagination.

enfaite c'est la fonction index de mon blog ,
ou je voulais rajouter en plus des posts(de ma table posts) , rajouter les projects(de ma table projects)
mais vu que j'ai une limit sur chaque table , ca me renvoye un systeme de pagination bizard ,
ou a la page1 => j'ai 6 post , page2 => 4 , page 3 =>3 ,page4 => 1 ,...
et ma limite perpage est de 3 ,.. donc ca devrai me donner
page1 => 3 page2 => 3 page 4 => 3 page5 =>3

qui serai assez aimable pour m'aider a regarder comment arranger ca svp , merci d'avance !
voila ma fonction index de mon PostsController

[code] /**

  • Blog, liste les articles
    */
    function index() {
    $perPage = 3;
    $this->loadModel('Post');
    $condition = array('online' => 1,'type'=>'post');
    $d['posts'] = $this->Post->find(array(
    'conditions' => $condition,
    'fields' => 'Post.id,Post.name,Post.slug,Post.created,Post.content,Category.name as catname,Category.slug as catslug',
    'order' => 'created DESC',
    'limit' => ($perPage
    ($this->request->page-1)).','.$perPage,
    'join' => array('categories as Category' => 'Category.id=Post.category_id'),
    ));
    $d['totalPo'] = $this->Post->findCount($condition);
    foreach($d['posts'] as $k => $v) {
    $d['posts'][$k] = $v;
    $d['posts'][$k]->comments = $this->getComments($v->id);
    $d['posts'][$k]->date = $this->transDate($v->created);
    }

    $this->loadModel('Project');
    $d['projects'] = $this->Project->find(array(
        'conditions' => array('online' => 1),
        'fields'     => 'Project.id,Project.name,Project.slug,Project.created,Project.content,Category.name as catname,Category.slug as catslug',
        'order'      => 'created DESC',
        'limit'      => ($perPage*($this->request->page-1)).','.$perPage,
        'join'       => array('categories as Category'=>'Category.id=Project.category_id')
    ));
    $d['totalPr'] = $this->Project->findCount(array('online' => 1)); 
    foreach($d['projects'] as $k => $v) {
        $d['projects'][$k] = $v;
        $d['projects'][$k]->comments = $this->getComments($v->id);
        $d['projects'][$k]->date = $this->transDate($v->created); 
    }
    
    $d['total'] = $d['totalPr'] + $d['totalPo'];
    $d['page'] = ceil($d['total'] / $perPage);
    
    $d['alls'] = array_merge($d['projects'], $d['posts']);
    
    // Les tableaux à trier 
    $arrayObject = new ArrayObject($d['alls']); 
    $arrayObject->uasort(array("PostsController", "compare")); 
    // Trie et affiche le tableau 
    $d['alls'] = $arrayObject; 

    //debug($d['alls']);
    //debug($d);
    $this->set($d);
    }

    // Fonction de comparaison
    function compare($a, $b)
    {
    if ($a->created == $b->created) {
    return 0;
    }
    return ($a->created > $b->created) ? -1 : 1;
    }[/code]
    merci d'avance

Aucune réponse