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'
Problème fonction aff [ par PetiteNonne ]
Bonjour, j'ai un problème que je n'arrive pas à résoudre seule. Ma page php se nomme connecter.php Ma variable : $connect <form name="Connect_View
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
Exécution d'un executable (Octave) en PHP [ par chiyo420 ]
Bonjour à tous ! Je suis débutante en php et j'ai besoin de vos lumières. Cela fait depuis quelques jours que je cherche en vain une solution à mon p
fonction exec et argument [ par chgall2 ]
bonjour a tous, je voudrais executer un script shell depuis php et j'ai besoin de vos lumières dans mon code php: exec("sudo /root/scripts/ajout.sh
PHP Script de pargination [ par aboukam ]
SALUT A TOUS J'ai un problème avec un script de pagination que j'ai télécharger pour adapter a mon site pour lister les informations de la base de don
Session en fonction d'un attribut [ par arbilus ]
Bonjour, je suis actuellement entrain d'essayer de sécuriser un script php en limitant son utilisation. J'ai cela comme script: [code=php]if($_SESSI
<form> dans php [ par TELAL ]
Bonjour, Je suis en train de faire une page pour l'administrateur pour qu'il puisse modifier les textes qu'il va mettre sur son site. Et voici le scr
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|