Affichage de résultats mysql sur plusieurs pages


Contenu du snippet

bon voilà, demandé par cercleaventure sur le forum, une fonction qui gère l'affichage des liens "page suivante", "précédente", ... pour couper l'affichage du résultat d'une grosse requete
voici un petit exemple pour montrer ma fonction dans ce contexte:

Source / Exemple :


function gestion_pages($d,$l,$lien,$nb_total){
	//$d:		premier enregistrement affiché
	//$l:		nombre d'enregistrements affichés par page
	//$lien:	lien utilisé pour la page actuelle (attention les parametes $d et $l ne doivent pas etre utilisés)
	//$nb_total:	nombre total d'enregistrements

	echo '<table width="100%" cellspacing="0" cellpadding="2" border="0"><tr><td width="33%" nowrap align="left" valign

="bottom">';
	$debut=$d-$l;
	if(substr_count($lien,'?')==0)
		$lien.='?';
	else
		$lien.='&';
	if($debut<0) $debut=0;
	if($d>0){
		echo '<a href="'.$lien.'d=0&l='.$l.'">Première page</a>, ';
		echo '<a href="'.$lien.'d='.$debut.'&l='.$l.'">Page précédente</a>';
	}
	echo '</td><td width="33%" nowrap align="center" valign="bottom">';
	echo ceil($nb_total/$l)-ceil(($nb_total-$d)/$l)+1; //affiche le numéro de la page courante
	echo '/';
	echo ceil($nb_total/$l); //affiche le nb total de pages
	echo '</td><td width="33%" nowrap align="right" valign="bottom">';
	$suiv=$d+$l;
	if($d+$l<$nb_total){
		echo '<a href="'.$lien.'d='.$suiv.'&l='.$l.'">Page suivante</a>, ';
		echo '<a href="'.$lien.'d='.($nb_total-$l).'&l='.$l.'">Dernière page</a>';
	}
	echo '</td></tr></table>';
}

if(!isset($_GET[l])) $_GET[l]=20; //pour avoir que 20 enregistrements par page par exemple
if(!isset($_GET[d])) $_GET[d]=0;  //on affiche en premier l'enregistrement 0 (le premier) par défaut

$req=mysql_query("select * from messages limit $_GET[d], $_GET[l];"); //ça c'est la requete de base pour sélectionner ce 

qu'on va afficher sur la page

$nb_total=mysql_num_rows(mysql_query("select * from messages;")); //cette requete sert à compter le nombre d'enregistrement 

total (pour connaitre le nombre de pages au total)

//$req va contenir tous les enregistrement à afficher
//libre à vous d'en faire ce que vous voulez ici
//un for pour les afficher, ...
//c'est ici que vous gérez votre affichage des résultats

//et en bas, on appelle ma fonction pour afficher les liens suivant la page ou on se trouve

gestion_pages($_GET[d],$_GET[l],$_SERVER['REQUEST_URI'],$nb_total);

Conclusion :


voilà, n'hésitez pas à me poser des questions :p

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.