Bonjour,
Voilà je voudrai une aide pour terminer ma pagination
Voila le code :
//pagination
$worksPerPage = 3;
$worksTotalesReq = $db->query('SELECT id FROM works');
$worksTotales = $worksTotalesReq->rowCount();
$pagesTotales = ceil($worksTotales/$worksPerPage);
//si id en get
if(isset($_GET['id']) AND !empty($_GET['id']) AND $_GET['id'] > 0 AND $_GET['id'] <= $pagesTotales) {
$currentPage = intval($_GET['id']);
} else {
//si id null alors page sera egal 1
$currentPage = 1;
//redirect('home&id=1');
}
$startPaginat = ($currentPage-1)*$worksPerPage;
//pagination number link
function paginatNumbers(){
global $pagesTotales, $currentPage;
$prev = $currentPage - 1; //previous page is page - 1
$next = $currentPage + 1; //next page is page + 1
echo '<ul style="margin:0;" class="pull-right pagination pagination-sm">';
//prev
if($currentPage == 1){
echo '<li class="disabled" /><a>«</a></li>';
}else{
echo '<li><a href="'. WEBROOT .'index.php?page=home&id=' . $prev . '">«</a></li>';
}
//pagination current
for($i=1; $i <= $pagesTotales; $i++) {
if($i == $currentPage) {
echo '<li class="active"><a>'. $i .'</a></li>';
} else {
echo '<li><a href="'. WEBROOT .'index.php?page=home&id='.$i.'">' . $i . '</a></li>';
}
}
//next last page
if(isset($currentPage) && $currentPage == $pagesTotales){
echo '<li class="disabled" /><a>»</a></li>';
}else{
echo '<li><a href="'. WEBROOT .'index.php?page=home&id=' . $next . '">»</a></li>';
}
echo '</ul>';
}
Fin du code
En faite je n'arrive pas un splitter avec des point par exemple quand j'ai beaucoup d'articles ou de topic
En vous remerciant !! :)
Salut,
J'aimerai poser 2 questions avant :
1)
Je ne suis pas sur d'avoir compris :
Si tu as par exemple 20 pages, pour l'instant ça s'affiche de cette façon :
<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 >>
Et toi tu voudrais plutôt avoir quelque chose comme :
<< 1 ... 6 7 8 ... 20 >>
Est-ce que c'est ça ?
2)
Je n'ai pas bien compris cette ligne :
$startPaginat = ($currentPage-1)*$worksPerPage;
Si par exemple, $current_page est à 4, on va avoir :
$startPaginat = (4 - 1) * 3 ; // 9
Alors si la page courante est 4, on commence la pagination à 9 ?
Est-ce que tu t'es trompé, ou c'est moi qui n'ai pas bien compris le code ?
Bonjour SLK pour la première question oui je veut bien faire ça << 123 ... 789 >> avec mon design ça donnerai une case vide a la place des petit point.
Pour la deuxième question j'ai adapter ça
https://www.grafikart.fr/tutoriels/php/pagination-php-51
j'ai ajouter des truc mais je ne suis pas trop douée en math.
Cela dit :
$startPaginat = ($currentPage-1)*$worksPerPage;
Est liée a ma requète et ainsi si je veut plus de page je ne modifie que ma première variable qui sera dynamique.
//liste works
$req = $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,
users.username,
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.id DESC LIMIT $startPaginat,$worksPerPage
");
Il y a un autre topic avec exactement le même sujet (il me semble) : https://www.grafikart.fr/forum/topics/22988
Si c'est ça, pense à faire une recherche avant de poser la question directement :)
AlexJM oui je l'avais bien vue ce topic mai il n'a pas étais résolue et c'est du code que je comprend pas.
Le sujet à été créer par moi j'ai actualisé mon script en résolu et il marche très bien
Bonjour,
pourquoi ne pas utiliser une libraire ?
Il y a des librairies qui te permettent de générer des paginations personalisables en seulement quelques lignes de code (2 lignes de code dans un Controller, et 1 ligne de code dans une Vue par exemple).
stephweb Oui enfin je connai encore très mal PHP et je ne fait pas de MVC je ne comprend pas sa logique.
OK.
J'ai dév cette pagination : [https://github.com/stephweb/ILD-Pagination]
si ça peut te rendre service essaye la.
Elle est simple, meme sans MVC.