NUMÉROS DE PAGE

Messages postés
80
Date d'inscription
dimanche 23 février 2003
Statut
Membre
Dernière intervention
16 juin 2008
- - Dernière réponse : VestaX
Messages postés
376
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013
- 8 avril 2013 à 14:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24067-numeros-de-page

VestaX
Messages postés
376
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
24 avril 2013
-
Salut,

j'arrive un peu tard :p

Excellent mais cependant il y a un petit problème. Exemple, j'ai 8 pages en tout, et quand j'arrive à la 8eme page, ça continue de paginer à la 9eme, 10eme etc.. et bien entendu la 9eme, 10eme etc.. sont vides.

Ca aurait été bien de pouvoir mettre un système de blocage quand ça arrive à la fin.
260686
Messages postés
1
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
27 juillet 2010
-
Waoww
Merci coockiesch,
Juste une petite information : en pgsql on change
"SELECT * FROM table LIMIT $start, $nb_results_p_page"
en
"SELECT * FROM table LIMIT $nb_results_p_page OFFSET $start"
cdie
Messages postés
31
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
12 février 2012
2 -
Nikel, exactement ce que je cherchais ! Merci :)
staykool
Messages postés
1
Date d'inscription
mercredi 30 août 2006
Statut
Membre
Dernière intervention
16 mai 2007
-
electroweb, est-ce que tu as mis le code dans une classe finalement?

Moi j'ai ajouter un peu de style sur l'affichage et j'utilise aussi mysqli au lieu de mysql... Je vous en fait donc part! j'espère que tout sera beau... c'est la première fois que je répond à un commentaire! :o))

$nb_results_p_page = 1; // nombre de résultats par page
$nb_avant = 3; // nombre de page avant la page courante
$nb_apres = 3; // nombre de page après la page courante
$premiere = 1; // aficher le lien "première page" (1 ou 0)
$derniere = 1; // afficher le lien "dernière page" (1 ou 0)
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)

// comptage du nombre de lignes de la base
$sqlSelectUser = "SELECT count(id_user) FROM user";
$resSelectUser = $mysqli->query($sqlSelectUser);
$nb_user = $resSelectUser->fetch_array();

// nombre de lignes
$nb_results = $nb_user[0];

// nombre total de pages
$nb_pages = ceil($nb_results / $nb_results_p_page);

// nombre de pages avant
$avant = $courant > ($nb_avant + 1) ? $nb_avant : $courant - 1;

// nombre de pages après
$apres = $courant <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $courant;

echo '

';

// première page
if($premiere && $courant > 1)
echo '<li>[' . $_SERVER['SCRIPT_NAME'] . ' Première] </li>';
else
echo '<li class="disablepage">Première</li>';

// page précédente
if($courant > 1)
echo '<li>[' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant - 1) . ' Précédente] </li>';
else
echo '<li class="disablepage">Précédente</li>';

// affichage des numéros de page
for($i = $courant - $avant; $i <= $courant + $apres; $i++)
{

// page courante
if($i == $courant)
echo '<li class="currentpage">' . $i . '</li>';
else
echo '<li>[' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i . ' ' . $i . '] </li>';
}

// page suivante
if($courant < $nb_pages)
echo '<li>[' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant + 1) . ' Suivante] </li>';
else
echo '<li class="disablepage">Suivante</li>';

if($derniere && ($courant < $nb_pages))
echo '<li>[' . $_SERVER['SCRIPT_NAME'] . '?page=' . $nb_pages . ' Dernière] </li>';
else
echo '<li class="disablepage">Dernière</li>';

echo '


Page '.$courant.' sur '.$nb_pages.'
';

===============
CSS
===============

.pagination {padding: 2px;}
.pagination ul {margin: 0; padding: 0; text-align: left; font-size: 16px;}
.pagination li {list-style-type: none; display: inline; padding-bottom: 1px;}
.pagination a, .pagination a:visited {padding: 0 5px; border: 1px solid rgb(0,51,102); text-decoration: none; color: #2e6ab1;}
.pagination a:hover, .pagination a:active {border: 1px solid #2b66a5; color: #000; background-color: lightblue;}
.pagination li.currentpage {font-weight: bold; padding: 0 5px; border: 1px solid navy; background-color: rgb(0,51,102); color: #FFF;}
.pagination li.disablepage {padding: 0 5px; border: 1px solid rgb(145,145,145); color: #929292;}
.pagination li.currentpage, .pagination li.disablepage { /*IE 6 and below. Adjust non linked LIs slightly to account for bugs*/ margin-right: 5px; padding-right: 5px;}
coockiesch
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3 -
Salut!
Que la pagination... :-)

C'est à toi de faire l'affichage de tes données! Je l'air pas fait car c'était pas le but de la source et ça change trop d'un cas à l'autre...

@++

R@f