|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
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
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
génération d'une page php par php [ par Vapula ]
Bonjour à tousJe souhaiterais générer une page php grâce à une fonction php , mais le problème est que la fonction envoie bien le code html, et php SA
Pb avec java script + frame [ par mika20 ]
Salut.j'ai un pb. je n'arrive pas a faire afficher une page php dans une frame lorsque je clic sur un clien en java scripte. Je m'explique plus claire
pagination sur une page php [ par hbib ]
salut,je souhaiterai savoir comment faire pour faire une pagination sur une page phpen effet jai un tableau qui affiche differente infos de ma base de
cron php [ par str ]
Salut,Je suis a la recherche d'une commande pour executer un script php uniquement sur le serveur à partir d'une page php executée par un navigateur c
colle [ par conan76 ]
Une petite colle,Je voudrais tester dans le but d'optimisations plusieurs choses :1) temps de traitement du script PHP2) poids de la page récupérerain
Apache/Script [ par glipper ]
Bonjour,j'ai monté un serveur Apache (v1.3), et j'heberge un ami provisoirement. Mais j'aimerais que lorsque l'on tape l'adresse de son site ("http://
Cherche Script PHP [ par ykc ]
Bonjour,Je cherche 1 script php qui me permettrait par methode d'"include()" de n'avoir que la page index.php et les autres s'afficheraien dedans avec
Pagination avec PHP/MSAccess [ par le_freeman ]
Bonjour,je voulais savoir si certains d'entre vous pourraient me dire comment je pourrais faire un affichage page par page de données récupérées via P
Fonction mail(), envoi sans passé par une page php [ par BelphegorCLC ]
Salut,Ma question est simple :Comment faire pour envoyer un mail sans passer par un page php ?J'entend par là :par exemple, je voudrai envoyer un mail
Fonction header et fichier .htaccess [ par Bestgamer ]
J'ai un problème avec la fonction header dans PHP.Voici le code dans mon fichier .htaccess:ErrorDocument 404 http://localhost/erreur404.phpQuand j'ess
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|