Pagination très simple sans tableau

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 998 fois - Téléchargée 23 fois

Contenu du snippet

ce code permet d'afficher la valeur d'un champ d'une table page par page en ayant 15 lignes par page

il est bien commenté et si vous avez des questions et des améliorations à apporter n'hésitez pas

Source / Exemple :


<?
  $p= $_GET["p"];
  $q="select id_nom from eco_nom";
  $t=dbi_query($db_name, $q, $db_driver);//fonction personnelle qui execute la requette à remplacer par mysql_db_query()
  $nbp=ceil(mysql_num_rows($t)/15);//calcul du nombre de pages
if (empty($p))//ce test sert à mettre la page par défaut à 1
	$p=1;

if ($p==1)
   	$d=0;//début d'affichage
else
	$d=($p+15)-2;//début d'affichage si la page!==1
	$f=$d+15;//fin d'affichage dans ce cas 15 affichage par page
	$limit = "".$d.",".$f."";//limit du select 
	$query ="select id_nom from eco_nom limit ".$limit;//selection des champs à afficher
	$temp=dbi_query($db_name, $query, $db_driver);//fonction personnelle qui execute la requette à remplacer par mysql_db_query()
    //affichage des champs
	while ($res= dbi_fetch ($temp,"row",$db_driver))//dbi_fetch à remplacer par mysql_fetch_array ou row
  		{	?>
			<p><? echo $res[0];?></p>
			<? } 
		if ($p==1)//test si on est à la page1
			{?>
			<p><a href="test.php?p=<? echo($p+1)?>">suivant</a></p>
			<p><a>précédent</a></p><? //ne donne pas la possibilité d'afficher la page précédente ?>
		 <? }?>
		<? if(($p>1) and ($p<$nbp))//test si on est à la page x comprise entre page 1 et $nbp nombre de page
			{?>
		<p><a href="test.php?p=<? echo($p+1)?>">suivant</a></p>
		<p><a href="test.php?p=<? echo($p-1)?>">précédent</a></p>
		<? }
			if($p==$nbp)
			{?>
		<p><a>suivant</a></p><? //ne donne pas la possibilité d'afficher la page suivante ?>
		<p><a href="test.php?p=<? echo($p-1)?>">précédent</a></p>
		<? }?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
RAKIZM, tu n'as qu'a décaler les id quand tu supprimes un article...
Messages postés
80
Date d'inscription
lundi 19 juin 2006
Statut
Membre
Dernière intervention
16 février 2008

tu veux dire utiliser where comme ça :
select id from table where id between $d,$f ;

le pb c ke les id ne sont pas num auto-increment auquel cas limit sera meilleur
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
et bien, quand tu fais limit, mysql séléctionne tout les champs de la table, et ne renvoi que les premiers, le temps de calcul est considérable... pour du where, mysql ne séléctionne qu'une partie des lignes : uniquement les bonnes... ce qui rend la requette beaucoup plus rapide...

essai avec EXPLAIN par exemple...
Messages postés
80
Date d'inscription
lundi 19 juin 2006
Statut
Membre
Dernière intervention
16 février 2008

coucou qu'est ce que tu racontes??? j'ai pas bien saisi l'histoire du where et limit
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
avec un limit; il parcours toute la table, avec un where, il n'en parcours qu'une partie...
Afficher les 16 commentaires

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.