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