Page 1 sur 1

Pagination limitée

Posté : 21 avr. 2014, 23:25
par cris84
Bonjour,
je voudrais ajouter à ma pagination des pointillés pour limiter s'il y à trop de pages, exemple : [1] [2].....[6] [7]
Aujourd'hui j'affiche sans limite, c'est pas très esthétique :?

voici mon code actuel :

Merci d'avance de vos suggestions :D
<?php
$limit_par_page = 1; 
	if (isset($_GET['page']) and !empty($_GET['page']) )
	{
		$page = intval($_GET['page']);
	}
	else
	{
		$page = 1;
	}
	$from = ($page - 1) * $limit_par_page;

	
	
	$reponse = mysql_query('SELECT * FROM membres  ORDER BY id DESC LIMIT  '.$from.', '.$limit_par_page)or die(mysql_error());

.....
.....
$requete = mysql_query('SELECT COUNT(id) AS nb_membres FROM membres');
	
	$donnees = mysql_fetch_assoc($requete);

$nb_pages = ceil($donnees['nb_membres'] / $limit_par_page);
	if ($nb_pages > 1) echo $lang['aller_a_la_page'];
	
	for ($i=1 ; $i<=$nb_pages ; $i++)
	{
	
		if ($i == $page)
		{
		
		        echo ' '.$i.'';
				}
				
		else
		{
			echo '&nbsp;&nbsp;<a href="liste-des-membres-'.$i.'.html">[ '.$i.' ]</a>';
		}
	}
?>

Re: Pagination limitée

Posté : 22 avr. 2014, 08:21
par morganK
Un bon tuto dans lequel tu trouveras certainement ton bonheur ! http://www.petit-kiwi.com/php-creation- ... on-avancee

Re: Pagination limitée

Posté : 22 avr. 2014, 10:25
par cris84
Bonjour,

merci pour ce lien, mais je ne veux pas quelque chose de trop compliquer à mettre en place.
Je pense qu'on peut améliorer mon code mais je ne sais pas de quelle manière...

Re: Pagination limitée

Posté : 22 avr. 2014, 10:33
par morganK
Le fait de vouloir créer des troncatures compliquera forcément ton code puisque tu auras alors de multiples conditions pour l'affichage de tes pages.
Je te conseille de lire ce tuto, tu trouveras des similitudes avec ton code et tu pourras alors en retirer seulement ce qui est nécessaire pour l'affichage que tu veux.

Re: Pagination limitée

Posté : 22 avr. 2014, 16:44
par cris84
voici le code finale qui fonctionne parfaitement. Ca peut aider si jamais...
<?php

if( isset($_GET['page']) && is_numeric($_GET['page']) )
        $page = $_GET['page'];
    else
        $page = 1;
      
    
    $pagination =20;
   
    $limit_start = ($page - 1) * $pagination;

	
	$reponse = mysql_query('SELECT * FROM membres ORDER BY membres.id DESC LIMIT  '.$limit_start.', '.$pagination.'')or die(mysql_error());

....
....

$requete = mysql_query('SELECT COUNT(id) AS nb_membres FROM membres');
	
	$donnees = mysql_fetch_assoc($requete);
    $nb_total= $donnees['nb_membres'];

	 $nb_pages = ceil($nb_total / $pagination);
     if ($nb_pages > 1) { echo'Allez à la page : ';
	 
	 if ($page > 1 )
        echo " <a href=\"liste-des-membres-".($page-1).".html\">Précédent</a> ";
    else
        echo "Précédent ";
	 
	 }
    $un = 1;
    $premier = max(1, $page - $un);
    $dernier = min($nb_pages, $page + $un);
    if ($premier > 1) {
    
    echo " <a href=\"liste-des-membres-1.html\">[ 1 ]</a> ";
    if ($premier > 2) {
       
        echo " ... ";
        }
    }
      
   
    for ($i = $premier ; $i <= $dernier ; $i++) {
	if ($nb_pages > 1) {
        if ($i == $page )
            echo "[ $i ]";
        else
            echo " <a href=\"liste-des-membres-$i.html\">[ $i ]</a> ";
    }
	}
    if ($dernier < $nb_pages) {
    if ($dernier < $nb_pages - 1) {
        
        echo " ... ";
    }
   
    echo "<a href=\"liste-des-membres-$nb_pages.html\">[ $nb_pages ]</a>";
	
}

		 if ($nb_pages > 1) {
    if ($page < $nb_pages )
        echo " <a href=\"liste-des-membres-".($page+1).".html\">Suivant</a> ";
    else
        echo "Suivant";
		}
 ?>