[RESOLU] Pagination limitée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Pagination limitée

Re: Pagination limitée

par cris84 » 22 avr. 2014, 16:44

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";
		}
 ?>

Re: Pagination limitée

par morganK » 22 avr. 2014, 10:33

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

par cris84 » 22 avr. 2014, 10:25

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

par morganK » 22 avr. 2014, 08:21

Un bon tuto dans lequel tu trouveras certainement ton bonheur ! http://www.petit-kiwi.com/php-creation- ... on-avancee

Pagination limitée

par cris84 » 21 avr. 2014, 23:25

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>';
		}
	}
?>