Vous êtes ici Codes PHP et MySQL > Applications > [PHP/SQL] Script de pagination (un modèle)

 

[PHP/SQL] Script de pagination (un modèle)

Script de pagination en PHP avec 2 requêtes SQL.

Caractéristiques :
- deux paramètres dans l'URL : nombre d'éléments par page et page actuelle
- nombre minimum d'éléments par page (ici 5)
- mise en exergue de la page actuelle par du balisage (strong)
- lien vers la page précédente (sauf sur la page 1)
- lien vers la page suivante (sauf sur la dernière)
- nombre total de pages dispo en variable

Page de démo (ne montre que l'aspect visuel).

Inspiré d'un tutoriel du SDZ ( http://www.siteduzero.com/tutoriel-3-14547-tp-un-livre-d-or.html ).
 
poujolrost-mathias
Site de l'auteur voir
[14] sources en PHP voir
Code vu 15833 fois
Enregistré le 23 Juil 2009
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute [PHP/SQL] Script de pagination (un modèle)
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : [PHP/SQL] Script de pagination (un modèle)                */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts522-PHP.htm              */
/* Auteur         : poujolrost-mathias                                        */
/* Date édition   : 23 Juil 2009                                              */
/* Website auteur : http://site.mathiaspoujolrost.net/competences/            */
/*                                                                            */
/******************************************************************************/


/* Script PHP por afficher des élements, en les paginant */

/* DEBUT recuperation du nombre par page */
if (isset($_GET['nombre'])) 
{ 
    $nombreDeElementsParPage = (int) $_GET['nombre'];
    if ($nombreDeElementsParPage 5)
            { $nombreDeElementsParPage 5; } // par défaut
} 
else 
{   $nombreDeElementsParPage 5;    } // par défaut
/* FIN recuperation du nombre par page */

/* DEBUT recuperation du numéro de page courante */
if (isset($_GET['page']))
    { $page = (int) $_GET['page']; } 
else // La variable n'existe pas, c'est la première fois qu'on charge la page
    $page 1;} // On se met sur la page 1 (par défaut)
/* FIN recuperation du numéro de page courante */

/* On calcule le numéro du premier élément qu'on prend pour le LIMIT de MySQL */
$premierElementAAfficher = ($page 1) * $nombreDeElementsParPage;

/* requête pour le nombre total de la sélection */
$reqNbrTotal "SELECT COUNT(*) AS nbr FROM latable WHERE $where"$resNbrTotal mysql_query($reqNbrTotal); 
$nbr mysql_fetch_assoc($resNbrTotal); 
$nombreLignes $nbr['nbr']; // total pour la requete = pas que sur cette page

/* req. propre à cette page */
$requete "SELECT * 
        FROM latable 
        WHERE $where 
        ORDER BY ordre ASC 
        LIMIT $premierElementAAfficher, $nombreDeElementsParPage"$resultat mysql_query($requete); 
$nombreDeElementsSurCettePage mysql_num_rows($resultat); 
 
/* nombre de page, par arrondi à l'inférieur */
$nombreDePages  ceil($nombreLignes $nombreDeElementsParPage); 

/* DEBUT rédaction paragraphe de pagination */
$pagination "Page : ";
    
if ($page != 1// si on n'est pas sur la n°1 (= pas de précédente)
{
    $pagination .= ' <a href="?nombre='.$nombreDeElementsParPage.'&amp;page=' . 
($page 1) . '#resultats" title="page '.($page 1).
'"><abbr title="page pr&eacute;c&eacute;dente">Pr&eacute;c.</abbr></a> ';
}
if ($page != $nombreDePages// si on n'est pas sur la dernière (= pas de suivante)
{
    $pagination .= ' <a href="?nombre='.$nombreDeElementsParPage.'&amp;page=' . 
($page 1) . '#resultats" title="page '.($page 1).
'"><abbr title="page suivante">Suiv.</abbr></a> ';
}
for ($i $i <= $nombreDePages $i++) 
{
    if ($i == $page// si on est sur la page actuelle
    {
        $pagination .= '<strong title="page actuelle">&nbsp;'$i .'/'.
$nombreDePages.'&nbsp;</strong>';
    }
    else
    {
        $pagination .= ' <a href="?nombre='.$nombreDeElementsParPage.
'&amp;page=' $i '#resultats" title="page '.$i.' sur '.$nombreDePages.
'">&nbsp;'$i .'&nbsp;</a> ';
    } 
}
$difference = ($nombreLignes%$nombreDePages) +1;
$pagination .= "(affichage des résultats "$pagination .=  $premierElementAAfficher+1$pagination .=  " &agrave; ";  
if( ($premierElementAAfficher+$nombreDeElementsSurCettePage) != ($page*
$nombreDeElementsParPage) )
{ 
    $pagination .= $premierElementAAfficher+$nombreDeElementsSurCettePage; 
}
else
    {   $pagination .= $premierElementAAfficher+$nombreDeElementsParPage;   }

$pagination .= " sur un total de $nombreLignes pour cette s&eacute;lection)."/* FIN rédaction paragraphe de pagination */ 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Touts les éléments</title>
</head>

<body>

<form action="#resultats" method="get" id="form">
    <p>ici vos critères de sélection, tri...</p>
    <label for="l_nombre">Nombre par page</label> <input type="text"
 name="nombre" id="l_nombre" value="<?php echo @rappel($nombreDeElementsParPage)
; ?>" size="2" maxlength="2" /> 
    <input type="submit" value="Afficher les elementss" /></p>
</form>

<?php

if (!$resultat) 
{
    echo 
"<p>&Eacute;chec lors de la lecture de la table. <strong><a" .
" href=\"lapage.php\">Retour &agrave; cette page (avec les param&egrave;tres" .
" par d&eacute;faut)</a></strong>.</p>";
} 
elseif ($nombreDeElementsSurCettePage == 0)
{
    echo 
"<p>Il n'y a aucun élément correspondant à cette sélection <em>ou</em> des" .
" param&egrave;tres de l'URL sont incorrects. <strong><a href=\"lapage.php\">R" .
"etour &agrave; cette page (avec les param&egrave;tres par d&eacute;faut)</a><" .
"/strong>.";
}
else 
{
    echo "<p id=\"resultats\">$pagination</p>" ;
    
        /* DEBUT de la boucle */
        while ($ligne mysql_fetch_object($resultat))
    {
        
        echo "<h3>$ligne->ref</h3>\n";
        echo 
"<p><img class=\"vignette\" src=\"../img/$ligne->vignette\"" .
" alt=\"$ligne->alt\" /></p>";
    } 
        /* FIN de la boucle */
    mysql_free_result($resultat);
        
    echo 
"<p style=\"clear: both; margin-top: 1em;\">$pagination <a" .
" href=\"#form\">Retour au formulaire</a>.</p>" ;

}// FIN du else
?>




</body> 
</html>


?>
 

Fonctions du code

: Détermine si une variable est affectée - (PHP 4, PHP 5)
: Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)
: Lit une ligne de résultat MySQL dans un tableau associatif - (PHP 4 >= 4.0.3, PHP...
: Retourne le nombre de lignes d'un résultat MySQL - (PHP 4, PHP 5, PECL...
: Arrondit au nombre supérieur - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Retourne une ligne de résultat MySQL sous la forme d'un objet - (PHP 4, PHP 5,...
: Libère le résultat de la mémoire - (PHP 4, PHP 5, PECL mysql:1.0)
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Applications

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité