PDO reconstruction de ma pagination
Posté : 07 déc. 2017, 00:14
Bonsoir,
Tant bien que mal j'essaye de reconstruire ma pagination qui fonctionne très bien en PHP procédural avec ias-ajax infinite scroll.
Voici la class :
Cela dit elle fonctionne mais elle affiche toujours les même articles et il faut dire que je débute l'orienté objet, j'ai essayé de la construire en la découpant.
Je stock aussi en base de donnée le max d'article a afficher, que j'affiche sous forme de paramêtres avec cette class que j'utilise dans ma pagination.
Voila je n'ai pas les yeux d'un professionnelle pour check mes erreurs si une âme charitable peut y jetée un oeil ce sera grandement apprécié.
merci.
Tant bien que mal j'essaye de reconstruire ma pagination qui fonctionne très bien en PHP procédural avec ias-ajax infinite scroll.
Voici la class :
Code : Tout sélectionner
<?php
Class Home{
/*
$Params = new Parameters();
$PagesMax = $Params->GetParam(2);
$PagesTotal = $db->query('SELECT id FROM works WHERE posted=1');
$Total = $PagesTotal->rowCount();
$PagesTotales = ceil($Total/$PagesMax);
$StartPager = ($CurrentPage-1)*$PagesMax;
$limited = $StartPager .','. $PagesMax;
*/
//total de page a afficher
public function PagesMax(){
$parameters = new Parameters();
$PagesMax = $parameters->GetParam(2);
return $PagesMax;
}
//nombre d'article en base
public function CountWorks(){
global $db;
$PagesTotal = $db->query('SELECT id FROM works WHERE posted=1');
$Total = $PagesTotal->rowCount();
return $Total;
}
//on divise le total des page
public function PageTotales(){
$params = new Home();
$Total = $params->CountWorks();
$PagesMax = $params->PagesMax();
$PagesTotales = ceil($Total/$PagesMax);
return $PagesTotales;
}
//demarrage de la pagination
public function StartPager(){
$params = new Home();
$CurrentPage = $params->CurrentPage();
$PagesMax = $params->PagesMax();
$StartPager = ($CurrentPage-1)*$PagesMax;
return $StartPager;
}
//la limite de la pagination
public function Limited(){
$params = new Home();
$StartPager = $params->StartPager();
$PagesMax = $params->PagesMax();;
$limited = $StartPager .','. $PagesMax;
return $limited;
}
//la page courante
public function CurrentPage(){
if(isset($_GET['pager']) AND !empty($_GET['pager']) AND $_GET['pager'] > 0 AND $_GET['pager'] <= $PagesTotales) {
$CurrentPage = $_GET['pager'];
} else {
//si id null alors page sera egal 1
$CurrentPage = 1;
}
return $CurrentPage;
}
//la vue de la pagination
public function Pagination($nb=2){
$params = new Home();
$PagesTotales = $params->PageTotales();
$CurrentPage = $params->CurrentPage();
//pagination current
$pagination = '<div id="pagination">';
for($i=1; $i <= $PagesTotales; $i++) {
if($i <= $nb || $i > $PagesTotales - $nb || ($i > $CurrentPage-$nb && $i < $CurrentPage+$nb)){
if($i == $CurrentPage){
$pagination .= $i.' ';
}elseif($i == $CurrentPage+1){
$pagination .= '<a href="'.WEBROOT.'home/'.$i.'" class="suivant">'. $i .'</a>' ;
}else{
$pagination .= '<a href="'.WEBROOT.'home/'.$i.'">'. $i .'</a>' ;
}
}
}
$pagination .= '</div>';
return $pagination;
}
//la requette qui affiche les article use ias-ajax infinita scroll
public function HomeWorks(){
global $db;
$params = new Home();
$limited = $params->Limited();
return $db->query("
SELECT works.id,
works.name,
works.writer,
works.content,
works.posted,
works.date,
works.slug,
images.name AS image_name,
categories.cat_name,
categories.id AS catid,
users.email,
users.username,
users.avatar,
comments.post_id,
COUNT(comments.post_id) AS nbcoms
FROM works
LEFT JOIN users ON users.username = works.writer
LEFT JOIN categories ON works.category_id=categories.id
LEFT JOIN comments ON comments.post_id = works.id
LEFT JOIN images ON images.id = works.image_id
WHERE works.posted=1
GROUP BY works.id
ORDER BY works.date DESC LIMIT $limited
");
}
}
Je stock aussi en base de donnée le max d'article a afficher, que j'affiche sous forme de paramêtres avec cette class que j'utilise dans ma pagination.
Code : Tout sélectionner
<?php
Class Parameters{
private function Params(){
global $db;
$params = $db->query("SELECT * FROM parameters");
$param = [];
while($rows = $params->fetchObject()){
$param[] = $rows;
}
return $param;
}
public function GetParam($Parameters){
$GetParam = new Parameters();
return $GetParam->Params()[$Parameters]->param_value;
}
}
merci.