Affichage dynamique des resultats d'une requete mysql sur plusieurs pages

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 805 fois - Téléchargée 32 fois

Contenu du snippet

Ce script permet un affichage dynamique des resultats d'une requête sur plusieurs pages avec les liens vers les autres pages ainsi qu'un lien pg suivante et pg précédente. On choisit le nb de resultats affichés par page

Source / Exemple :


<?php
//(C) Grapsus: grapsus@hotmail.com
//c'est un morceau de code, c'est pour cette raison qu'il n'y a pas de balises html
//ce script est totalement libre, vous pouvez en faire ce que vous voulez ;-)
// /!\ pour que ca marche register_globals doit etre à "on" dans php.ini

//$pg est la variable qui indique sur quelle page se trouve l'utilisateur
//si par exemple vous affichez 10 resultats par page et que $pg=2, on affciche
//les resultats de 11 à 20...
//sur la page 3, de 21 à 30... etc

//on verifie si la variable $pg est definie, sinon on l'initialise a 1
if(!isset($_GET['pg'])){
	$pg = 1;
}else{
	$pg = $_GET['pg'];
}

//on verifie si la variable qui est censcée etre un numero de page est bien un chiffre,
//cela evite qu'un gogole vous pirate avec une injection mysql
if(!is_numeric($pg)){
	$pg = 1;
}

//connexion mysql
$link = mysql_connect("localhost", "root", "")or die("Erreur de connexion: ".mysql_error($link));
//chois d'une bdd
mysql_select_db("test", $link)or die("Erreur de connexion: ".mysql_error($link));

//c'est le nb d'enregstrements à affiche par page:
$enreg_par_pg = 10;

//fonction qui affiche les liens vers les autres pages, ainsi que les liens page suivante et page precedente:
function pgs($enreg_par_pg, $pg, $link){
//c'est la requete qui doit permettre le nombre de résultats total qui va etre reparti sur plusieurs pages
	$res = mysql_query("SELECT * FROM table", $link)or die("Erreur MySQL: ".mysql_error($link));
	$nb_enreg = mysql_num_rows($res);
	//on calcule le nb de pages
	$nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg );	
	//numero de page precedente
	$pp = $pg - 1;
	//numero de la page suivante
	$ps = $pg + 1;
	
	//si l'utilisateur se se trouve pas a la page n°1
	if($pg != 1){
		//on affiche un lien page précedente
		//si votre script a besoin d'autre variable pour fonctionner n'oublier pas des les transmettre en ajoutant &var=$var...
		echo "<a href='?pg=$pp'><<page précédente</a>";
	}
	
	//definition d'une variable pour la boucle
	$i=1;
	
	//la syntaxe do...while permet d'effectuer la boucle au moins une fois!
	do{
		//si $i n'est pas egal au numero de la page sur laquelle se trouve l'utilisateur...
		if($i != $pg){
			//...on affiche un lien vers cette page
			//idem: si votre script a besoin d'autre variable pour fonctionner n'oublier pas des les transmettre en ajoutant &var=$var...
			echo "&nbsp;<a href='?pg=$i'>$i</a>\n";
		}else{
			//...sinon on affiche simplement le n°  de la page actuelle
			echo "&nbsp;$i&nbsp;";
		}
	//incrémentation de la viariable de la boucle
	$i++;
	//on recommence tant que $i n'atteint pas le numero de la derniere page
	}while($i <= $nb_pg_rounded);
	
	//si l'utilisateur n'est pas a la derniere page...
	if($pg != $nb_pg_rounded){
		//...on affiche un lien page suivante
		//idem: si votre script a besoin d'autre variable pour fonctionner n'oublier pas des les transmettre en ajoutant &var=$var...
		echo "&nbsp;<a href='?pg=$ps'>page suivante>></a>";
	}
}

//ici on calcule à partir de quel enregistrement il faut afficher $enreg_par_pg résultats
$limit = $enreg_par_pg*$pg-$enreg_par_pg;

//c'est la requete qui selectione $enreg_par_pg resultats
$req = mysql_query("SELECT * FROM table LIMIT $limit, $enreg_par_pg")or die("Erreur MySQL: ".mysql_error($link));

//
//ici c le code qui affiche les resulatats de votre requete, tout depend du script
//par exemple:
//while($tab = mysql_fetch_assoc($req)){
//echo $tab["champ"];
//echo "<br>";
//}

//on appele la fonction précédament créée pour afficher les liens vers les autres pages, vous pouvez l'appeler plusieurs fois s'il le faut
echo "<br>";
pgs($enreg_par_pg, $pg, $link);
?>

Conclusion :


Voila j'ai essayé de faire ce bout de code le plus complet possible, si vous avez des remarques, dites le. Et lisez bien les commentaires

A voir également

Ajouter un commentaire

Commentaires

Super Merci, et en plus du code facile à prendre en main ....
Messages postés
8
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
6 mars 2012

Script très clair et pratique. Merci
Messages postés
5
Date d'inscription
mardi 29 mai 2007
Statut
Membre
Dernière intervention
26 mai 2008

Merci man... je pensais moi aussi concevoir le mien.. je suis déja a 70%
Messages postés
4
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
5 octobre 2008

superbe script :)
Messages postés
1
Date d'inscription
dimanche 11 juin 2006
Statut
Membre
Dernière intervention
11 juin 2006

Merci pour ce bout de code, c'est exactement ce que je cherché !
bon taf !
Afficher les 19 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.