Paginer un ensemble de pages grâce à PHP
Comment paginer une page
Tout d'abord, quesque la pagination ?
Elle vous permet de faire défiler plusieurs pages grâce à des liens les reliants les une aux autres.
De cette façon :
« 1 2 3 4 5 »
Pour que ce script marche, les url devront être renseignées sans l'adresse du site, c'est à dire que si vous voulez paginer une page située à cette URL :
http://monsite.fr/dossier/page.php
Vous devrez faire apparaitre le lien :
/dossier/page.php
Dans la page navigation.php qui suit !
» Attention à ne pas oublier le slash / avant l'adresse !
Maintenant, le code :
Dans une page nommée navigation.php, insérez ce code, vous permettant de gérer vos pages, les titres ...
<html>
<head>
<title> Test pagination </title>
<style type="text/css">
.mini_maxi {
padding: 0 2px 0 2px;
color:#000000;
}
a.mini_maxi {
color:#0066CC;
text-decoration:none;
}
a.mini_maxi:hover {
color:#000000;
}
a.page {
padding: 0 6px 0 6px;
background-color:#FFFFFF;
color:#0066CC;
text-decoration:none;
}
a.page:hover {
color:#000000;
}
.page_actuelle {
padding: 0 6px 0 6px;
text-decoration:none;
color:#000000;
font-weight:bold;
}
</style>
</head>
<body>
<?php
// -------------------------------------- //
// Script créé par http://cust.er.free.fr //
// -------------------------------------- //
// Ci dessous, toutes les pages que vous voulez ' paginer ' par ordre d'apparition !
// N'y mettez pas un lien dur mais juste le lien à partir de la source sans l'inclure.
$liens = array (
"", // Laissez vide pour commencer à la page 1
"/dossier/page1.php",
"/dossier/page2.php",
"/dossier/page3.php",
);
$titre = array (
"", // Aussi à laisser vide pour le titre de la page 0 ( qui ne sera pas affichée )
"Titre page 1",
"Titre page 2",
"Titre page 3"
);
// Cherche la place de l'adresse actuelle
$i = array_search($self, $liens);
// Cherche la place du dernier lien
$maxi = count($liens)-1;
// Nomme le premier lien
$mini = 0;
if ( $i != 1 ) // On prend notre minimum ( la valeur 1 de l'array )
{
// Affichage du lien ' page précédente '
echo '<a href="http://'.$_SERVER['HTTP_HOST'].''.$liens[$i-1].'" title="'.$titre[$i-1].'" class="mini_maxi"><</a> ';
}
else
{
// Affichage du symbole ' page précédente ' si on est à la page mini
echo '<span class="mini_maxi"><</span>';
}
// Le minimum est égal à 1 .. pour éviter d'avoir la page ' 0 ' affichée dans la pagination
$ii=1;
$separation = false;
while ( $mini < $maxi )
{
// Cherche la page correspondant au numéro
$lien_pages = $liens[$ii];
if ( $i == $ii )
{
// Page actuelle
if ( $separation == true ) { echo '|'; }
echo ' <span class="page_actuelle">'.$ii.'</span> ';
}
else
{
if ( $separation == true ) { echo '|'; }
// Toutes les pages
echo ' <a href="http://'.$_SERVER['HTTP_HOST'].''.$lien_pages.'" title="'.$titre[$ii].'" class="page">'.$ii.'</a> ';
}
// Incrémentation de va variable $mini
$mini++;
// Incrémentation de la variable $ii ( numéro des pages )
$ii++;
// Activation ou continuation de l'affichage des séparations ' | '
$separation = true;
}
if ( $i != $maxi )
{
// Affichage du lien ' page suivante '
echo ' <a href="http://'.$_SERVER['HTTP_HOST'].''.$liens[$i+1].'" title="'.$titre[$i+1].'" class="mini_maxi">></a>';
}
else
{
// Affichage du symbole ' page suivante ' si on est à la page maxi
echo '<span class="mini_maxi">></span>';
}
?>
</body>
</html>
Dans vos pages ( en extension .php ), insérez ce code ( à l'endroit où vous voulez faire apparaitre la pagination .. biensur ^^ )
<?php
$self = $_SERVER['PHP_SELF'];
include("navigation.php");
?>
Et voila, vos pages possédants cette include seront paginées !
N'oubliez pas de rentrer toutes les url où vous faites apparaitre la pagination dans la page navigation.php, sinon, le script ne marchera évidement pas !
« Script