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
texte du script php affiché dans la page résultat [ par jlarras ]
Bonjour, J'ai un petit problème avec php. J'ai téléchargé un script sur le web (PHPSearch), pour avoir un moteur de recherche interne. J'avais essayé
connexion entre page php et fonction JS [ par jagogordonne ]
Bonjour, je vais tenter d'expliquer mon problème. J'ai une page avec un formulaire qui contient un et lorsque je change ce select je récupère l'id d
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
|
Derniers Blogs
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|