comment créer des pagninations

Petit nouveau ! | 6 Messages

27 oct. 2006, 20:39

salut à tous

je cherche un script sur la pagination comme sur ce forum . CAr je n'arrive pas à faire quand il y a trop de page de réduire la pagination par des points
exemple : Page : 1 2 3 4 5 .. 86 87 88 89 90 91 .

merci :oops:
ci dessus le code qui afficje les numéros de page : <<< 1-2-3-4-5 >>>


$sql = "SELECT COUNT(*) AS nombre FROM liste "; 
$p = @mysql_query($sql) or die(mysql_error(error));  
$fin = @mysql_result($p,"0","nombre"); 

//on affiche 5 article par page
$debut = ($page - 1) * 5; 

//calcul du nombre de page
$nbpages = ceil($fin / 5);

if($nbpages>1) 
{
if($page==1) $pageprec=1; else $pageprec = $page-1;
echo "<a href='http://www.site.fr/index.php?page=$pageprec&fin=$fin'> <<< </a>"; 
}
	for($i = 1;$i <= $nbpages;$i ++)
	{	
                                if($page==$i) $text="<b>$i</b>"; else $text="$i"; 
		echo "<a href='http://www.site.fr/index.php? page=$i&fin=$fin'>$text</a>"; 
		
                                if($i < $nbpages) echo " - "; 
	
}
	
// Afficher suivante  si + 1 page  
if($nbpages>1) 
{
	if($page==$nbpages) $pagesuiv=$nbpages; else $pagesuiv = $page+1;
	echo "<a href='http://www.site.fr/index.php?page=$pagesuiv&fin=$fin'> >>> </a>"; 

}
Modifié en dernier par forst le 28 oct. 2006, 14:45, modifié 6 fois.

ViPHP
ViPHP | 3607 Messages

27 oct. 2006, 21:12


Petit nouveau ! | 6 Messages

28 oct. 2006, 00:38

merci mais ce n'est pas ca
ce script affiche toutes les numéros de pages.
je voudrais que certains numéros soit cachés pour faire courts.

exemple :

Page: 1 2 3 4 ... 47 48 49


on voit les points entre 4 et 47.

ViPHP
ViPHP | 3607 Messages

28 oct. 2006, 01:02

bien, je croit qu'une petite mise au point s'impose...(pas méchante je te rassure :wink: )
tu te trouves actuellement sur un forum d'entraide, où l'optique est de ne pas donner de code tout fait, car ça n'est pas comme ça que l'on apprend...
Je suis quasiment sur que ce que tu cherche n'existe pas clé en main, c'est pourquoi, il va te falloir mettre un peu les mains dans le cambouis.
la référence que je t'ai donner plus haut explique le plus dur du boulot, le fait de cacher le milieu des pages reste le plus facile à mon avis...
essaye déjà de faire des essais, si tu a un problème, à ce moment là revient nous voir, nous seront plus à même de t'aider...
voilivoilou!
bonne soirée

Petit nouveau ! | 6 Messages

28 oct. 2006, 01:57

j'ai ajouter le code ci-dessus.
ce code affiche : <<< 1 - 2 - 3 - 4 - 5 >>>

merci
Modifié en dernier par forst le 28 oct. 2006, 14:39, modifié 1 fois.

ViPHP
ViPHP | 1961 Messages

28 oct. 2006, 03:18

Bonsoir,

Es-tu sur que le code que tu as posté fonctionne ???
Moi j'ai un doute sur cette ligne
$debut = ($page - 1) * 5; 
Tu devrais avoir QQ chose du style
Notice: Undefined variable: page in /xx/yy/zzz.php on line n
De plus l'affichage que tu proposes me semble peu probable à la vue de
if($i < $nbpages) echo " - "; 
Tu devrais indenter ton code et le mettre entre les balises [ PHP] et [ /PHP] (sans les espaces après [) pour mieux visualiser et comprendre ce qu'il fait
<?php
	$sql = "SELECT COUNT(*) AS nombre FROM liste ";
	$p = @mysql_query($sql) or die(mysql_error(error)); 
	$fin = @mysql_result($p,"0","nombre");

	//on affiche 5 article par page
	$debut = ($page - 1) * 5;

	//calcul du nombre de page
	$nbpages = ceil($fin / 5);

	if($nbpages > 1)
	{
		if($page == 1){ 
			$pageprec = 1;
		} 
		else{		
			$pageprec = $page-1;
		}
		echo "<a href='http://www.site.fr/index.php?page=$pageprec&fin=$fin'> <<< </a>";
	}
   for($i = 1;$i <= $nbpages;$i ++){
   	if($page == $i){
   		$text = "<b>$i</b>";
   	}
   	else{
   		$text="$i";
   	}
      echo "<font size='1' face='verdana' color='#000000'><a href='http://www.site.fr/index.php?page=$i&fin=$fin'>$text</a></font>";
      if($i < $nbpages){
      	echo " - ";
      }
   }
   
	// Afficher suivante  si + 1 page 
	if($nbpages > 1){
   	if($page==$nbpages){
   		$pagesuiv=$nbpages;
   	}
   	else{
   		$pagesuiv = $page+1;
   	}
   	echo "<a href='http://www.site.fr/index.php?page=$pagesuiv&fin=$fin'> >>> </a>";
	} 
?> 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Petit nouveau ! | 6 Messages

28 oct. 2006, 14:40

ah j'oublais ce code affiche sur la forme
<<< 1 - 2 - 3 - 4 - 5 >>>

oui ce code marchait bien :oops: