Accueil > > > PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP
PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP
Information sur la source
Description
Ce script permet de créer une pagination automatique par appel de fonctions php à partir d'une quelconque requête SQL. Le mode d'affichage est celui du page à page incluant des liens précédent et suivant. Il se présente sous la forme d'un menu de liens < |1|2|3|... > que vous pouvez bien-sûr personnaliser à votre convenance.
Source
- <?
- //==============================================================================
- // # PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP #
- //==============================================================================
- ?>
- <html>
- <head>
- <title>Script de pagination automatique en php</title>
- <!-- Styles CSS -->
- <style type="text/css">
- html {font-size: 1.4em;}
- .pagination a {color: black;}
- .pagination a:hover {color: red; text-decoration: none;}
- .pagination a:visited {color: red; text-decoration: none;}
- </style>
- </head>
- <body>
- <?
- //==============================================================================
- // Configuration à modifier avec vos propres paramètres
- //==============================================================================
-
- // Connexion à la base de données
- $host = "localhost";
- $user = "root";
- $pass = "";
- $data = "mabase"; // Nommer ici la base de données
- $connect = mysql_connect($host, $user, $pass)
- or die("Connexion au serveur impossible !");
- $db = mysql_select_db($data, $connect)
- or die("Sélection de la base impossible !");
-
- // Paramétrage de la requête (ne pas modifier le nom des variable)
- $table = "matable"; // Table à sélectionner dans la base
- $champ = "champtest"; // Champ de la table à afficher pour tester ce script
- $sql = "SELECT * FROM $table"; // Requête initiale (à compléter si nécessaire)
-
- $parpage = 5; // Nombre d'enregistrements par page à afficher
-
- //==============================================================================
- // Déclaration et initialisation des variables (ici ne rien modifier)
- //==============================================================================
-
- // On définit le suffixe du lien url qui affichera les pages
- // $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
- $url = $_SERVER['PHP_SELF']."?limit=";
-
- $total = mysql_query($sql); // Résultat total de la requête $sql
- $nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
-
- // On calcule le nombre de pages à afficher en arrondissant
- // le résultat au nombre supérieur grâce à la fonction ceil()
- $nbpages = ceil($nblignes/$parpage);
-
- //==============================================================================
- // Exemple d'affichage HTML
- //==============================================================================
-
- // On teste en affichant la valeur des variables (facultatif)
- echo "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
- echo "<br />\n"."On affiche <b>".$parpage." enregistrements</b> par page, ";
- echo "soit un total de <b>".$nbpages." pages</b>.</p>\n";
-
- // Si une valeur 'limit' est passée par url, on vérifie la validité de
- // cette valeur par mesure de sécurité avec la fonction validlimit()
- // cette fonction retourne automatiquement le résultat de la requête
- $result = validlimit($nblignes,$parpage,$sql);
-
- // On affiche le résultat de la requête
- // On crée donc ici son propre tableau pour lequel on souhaite une pagination
- while ($ligne = mysql_fetch_array($result)) {
- echo $ligne[$champ]."<br />\n";
- }
-
- // Menu de pagination que l'on place après la requête
- echo "<div class='pagination'>";
- echo pagination($url,$parpage,$nblignes,$nbpages);
- echo "</div>";
-
- mysql_free_result($result); // Libère le résultat de la mémoire
-
- //==============================================================================
- // Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'
- //==============================================================================
-
- function pagination($url,$parpage,$nblignes,$nbpages)
- {
- // On crée le code html pour la pagination
- $html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
- // On vérifie que l'on a plus d'une page à afficher
- if ($nbpages > 1) {
- // On boucle sur les numéros de pages à afficher
- for ($i = 0 ; $i < $nbpages ; ++$i) {
- $limit = $i * $parpage; // On calcule le début de la valeur 'limit'
- $limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
- // On affiche les liens des numéros de pages
- $html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
- }
- }
- // Si l'on a qu'une page on affiche rien
- else {
- $html .= "";
- }
- $html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
- // On retourne le code html
- return $html;
- }
- function validlimit($nblignes,$parpage,$sql)
- {
- // On vérifie l'existence de la variable $_GET['limit']
- // $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
- if (isset($_GET['limit'])) {
- $pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
- $debut = $pointer[0];
- $fin = $pointer[1];
- // On vérifie la conformité de la variable $_GET['limit']
- if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
- // Si $_GET['limit'] est valide on lance la requête pour afficher la page
- $limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
- $sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
- $result = mysql_query($sql); // Nouveau résultat de la requête
- }
- // Sinon on affiche la première page
- else {
- $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
- $result = mysql_query($sql); // Nouveau résultat de la requête
- }
- }
- // Si la valeur 'limit' n'est pas connue, on affiche la première page
- else {
- $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
- $result = mysql_query($sql); // Nouveau résultat de la requête
- }
- // On retourne le résultat de la requête
- return $result;
- }
- function precedent($url,$parpage,$nblignes)
- {
- // On vérifie qu'il y a au moins 2 pages à afficher
- if ($nblignes > $parpage) {
- // On vérifie l'existence de la variable $_GET['limit']
- if (isset($_GET['limit'])) {
- // On scinde la variable 'limit' en utilisant la virgule comme séparateur
- $pointer = split('[,]', $_GET['limit']);
- // On récupère le nombre avant la virgule et on soustrait la valeur $parpage
- $pointer = $pointer[0]-$parpage;
- // Si on atteint la première page, pas besoin de lien 'Précédent'
- if ($pointer < 0) {
- $precedent = "";
- }
- // Sinon on affiche le lien avec l'url de la page précédente
- else {
- $limit = "$pointer,$parpage";
- $precedent = "<a href=".$url.$limit."><</a> | ";
- }
- }
- else {
- $precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
- }
- }
- else {
- $precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
- }
- return $precedent;
- }
- function suivant($url,$parpage,$nblignes)
- {
- // On vérifie qu'il y a au moins 2 pages à afficher
- if ($nblignes > $parpage) {
- // On vérifie l'existence de la variable $_GET['limit']
- if (isset($_GET['limit'])) {
- // On scinde la variable 'limit' en utilisant la virgule comme séparateur
- $pointer = split('[,]', $_GET['limit']);
- // On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
- $pointer = $pointer[0] + $parpage;
- // Si on atteint la dernière page, pas besoin de lien 'Suivant'
- if ($pointer >= $nblignes) {
- $suivant = "";
- }
- // Sinon on affiche le lien avec l'url de la page suivante
- else {
- $limit = "$pointer,$parpage";
- $suivant = "<a class='pagination' href=".$url.$limit.">></a>";
- }
- }
- // Si pas de valeur 'limit' on affiche le lien de la deuxième page
- if (@$_GET['limit']== false) {
- $suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
- }
- }
- else {
- $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
- }
- return $suivant;
- }
- // Fin du script
- ?>
- </body>
- </html>
<?
//==============================================================================
// # PAGINATION AUTOMATIQUE PAR APPEL DE FONCTIONS PHP #
//==============================================================================
?>
<html>
<head>
<title>Script de pagination automatique en php</title>
<!-- Styles CSS -->
<style type="text/css">
html {font-size: 1.4em;}
.pagination a {color: black;}
.pagination a:hover {color: red; text-decoration: none;}
.pagination a:visited {color: red; text-decoration: none;}
</style>
</head>
<body>
<?
//==============================================================================
// Configuration à modifier avec vos propres paramètres
//==============================================================================
// Connexion à la base de données
$host = "localhost";
$user = "root";
$pass = "";
$data = "mabase"; // Nommer ici la base de données
$connect = mysql_connect($host, $user, $pass)
or die("Connexion au serveur impossible !");
$db = mysql_select_db($data, $connect)
or die("Sélection de la base impossible !");
// Paramétrage de la requête (ne pas modifier le nom des variable)
$table = "matable"; // Table à sélectionner dans la base
$champ = "champtest"; // Champ de la table à afficher pour tester ce script
$sql = "SELECT * FROM $table"; // Requête initiale (à compléter si nécessaire)
$parpage = 5; // Nombre d'enregistrements par page à afficher
//==============================================================================
// Déclaration et initialisation des variables (ici ne rien modifier)
//==============================================================================
// On définit le suffixe du lien url qui affichera les pages
// $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
$url = $_SERVER['PHP_SELF']."?limit=";
$total = mysql_query($sql); // Résultat total de la requête $sql
$nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
// On calcule le nombre de pages à afficher en arrondissant
// le résultat au nombre supérieur grâce à la fonction ceil()
$nbpages = ceil($nblignes/$parpage);
//==============================================================================
// Exemple d'affichage HTML
//==============================================================================
// On teste en affichant la valeur des variables (facultatif)
echo "<p>La table <b>".$table."</b> compte ".$nblignes." <b>".$champ."</b>.";
echo "<br />\n"."On affiche <b>".$parpage." enregistrements</b> par page, ";
echo "soit un total de <b>".$nbpages." pages</b>.</p>\n";
// Si une valeur 'limit' est passée par url, on vérifie la validité de
// cette valeur par mesure de sécurité avec la fonction validlimit()
// cette fonction retourne automatiquement le résultat de la requête
$result = validlimit($nblignes,$parpage,$sql);
// On affiche le résultat de la requête
// On crée donc ici son propre tableau pour lequel on souhaite une pagination
while ($ligne = mysql_fetch_array($result)) {
echo $ligne[$champ]."<br />\n";
}
// Menu de pagination que l'on place après la requête
echo "<div class='pagination'>";
echo pagination($url,$parpage,$nblignes,$nbpages);
echo "</div>";
mysql_free_result($result); // Libère le résultat de la mémoire
//==============================================================================
// Fonctions à copier de préférence dans un fichier 'include/fonctions.inc.php'
//==============================================================================
function pagination($url,$parpage,$nblignes,$nbpages)
{
// On crée le code html pour la pagination
$html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
// On vérifie que l'on a plus d'une page à afficher
if ($nbpages > 1) {
// On boucle sur les numéros de pages à afficher
for ($i = 0 ; $i < $nbpages ; ++$i) {
$limit = $i * $parpage; // On calcule le début de la valeur 'limit'
$limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
// On affiche les liens des numéros de pages
$html .= "<a href=".$url.$limit.">".($i + 1)."</a> | " ;
}
}
// Si l'on a qu'une page on affiche rien
else {
$html .= "";
}
$html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
// On retourne le code html
return $html;
}
function validlimit($nblignes,$parpage,$sql)
{
// On vérifie l'existence de la variable $_GET['limit']
// $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
if (isset($_GET['limit'])) {
$pointer = split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
$debut = $pointer[0];
$fin = $pointer[1];
// On vérifie la conformité de la variable $_GET['limit']
if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
// Si $_GET['limit'] est valide on lance la requête pour afficher la page
$limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
$sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// Sinon on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
}
// Si la valeur 'limit' n'est pas connue, on affiche la première page
else {
$sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
$result = mysql_query($sql); // Nouveau résultat de la requête
}
// On retourne le résultat de la requête
return $result;
}
function precedent($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule et on soustrait la valeur $parpage
$pointer = $pointer[0]-$parpage;
// Si on atteint la première page, pas besoin de lien 'Précédent'
if ($pointer < 0) {
$precedent = "";
}
// Sinon on affiche le lien avec l'url de la page précédente
else {
$limit = "$pointer,$parpage";
$precedent = "<a href=".$url.$limit."><</a> | ";
}
}
else {
$precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
}
}
else {
$precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
}
return $precedent;
}
function suivant($url,$parpage,$nblignes)
{
// On vérifie qu'il y a au moins 2 pages à afficher
if ($nblignes > $parpage) {
// On vérifie l'existence de la variable $_GET['limit']
if (isset($_GET['limit'])) {
// On scinde la variable 'limit' en utilisant la virgule comme séparateur
$pointer = split('[,]', $_GET['limit']);
// On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
$pointer = $pointer[0] + $parpage;
// Si on atteint la dernière page, pas besoin de lien 'Suivant'
if ($pointer >= $nblignes) {
$suivant = "";
}
// Sinon on affiche le lien avec l'url de la page suivante
else {
$limit = "$pointer,$parpage";
$suivant = "<a class='pagination' href=".$url.$limit.">></a>";
}
}
// Si pas de valeur 'limit' on affiche le lien de la deuxième page
if (@$_GET['limit']== false) {
$suivant = "<a href=".$url.$parpage.",".$parpage.">></a>";
}
}
else {
$suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
}
return $suivant;
}
// Fin du script
?>
</body>
</html>
Conclusion
J'ai volontairement détaillé les commentaires de ce script car je souhaite qu'il aide au mieux les débutants en php (que je suis). J'ai tellement galéré pour trouver un script compréhensible qui fonctionne sans s'arracher les cheveux que j'ai fini par en créer un !
J'espère que ma contribution vous sera utile.
PS : Si il y a des erreurs ou des améliorations à faire, n'hésitez pas à le faire savoir.
Historique
- 01 septembre 2006 21:55:47 :
- J'ajoute le fichier zip pour éviter le copier/coller.
- 01 septembre 2006 23:37:21 :
- Correction dans les fonctions pour ne pas afficher de liens si l'on a qu'une seule page à afficher (c'est plus propre !)
Mise à jour du fichier zip également.
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Script php, fonction multiple [ par scrodofus ]
Bonjour, Voila je vous contact parceque j'aimerai realisser une page php qui je sais pas si c'est simple et ne connait pas comment faire le code. J'
Script de news [ par 0303 ]
Bonjour ! je cherche un script de news en PHP/MYSQL avec ce script on peut poster les différents champs tels que : la page inserer.php Titre de la
Ecrire un script javascript avec PHP [ par laubro ]
Bonjourje veux mettre un script d'image sur une page, avec un rollover pour affichage de la vigniette dans u autre endroit, donc pour precharger les i
déplacement [ par papiona ]
salutje sais que php dans une page html il gére ses script en php et les executer. dans mon cas j'ai une zone de texte 'textarea' pr le commentaire et
faille XSS pour pro :( [ par gfpl ]
Bonjour, en esperant trouver qq qui puise m'aider a combler ma faille XSSvoila la faille de type index.php ?>'><ScRiPt%20%0a%0d>alert(1687
iframe et script php [ par jeffwow ]
Bonjour.Si j'insère une page php dans un iframe. exemple: <iframe src="mapage.php" width="x" height="y"></iframe>Est-il possible de conn
une fonction php to html [ par adrick ]
bonjour j'aimerais savoir s'il existe une fonction php (ou tout autre moyen) de récupéré le code source de la page généré par phpdonc en gros exporter
fermmer une page php avec codes php [ par sbsouba ]
slut a tous je veux savoir s'il ya un code ou script php qui fermmer une page en php voila mon code sources<? $rep8=mysql_query("select * from ar
Pagination d'un tableau en php [ par liobrice ]
Bonjour sauriez vous comment faire la pagination d'un tableau en php.Voici ma fonction qui me permet de le faire./ displayTop2 ($filename,$n)// Foncti
Comment lancer un script PHP qui ne décharge pas la page courante ? [ par bluemandfr ]
Bonjour, Je fais appel à la communauté pour savoir si, depuis une page HTML classique, nommée pour cette explication "A", il est possible de lan
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Hero
Entre 550€ et 550€
|