<?php
/* Options de connexion à MySQL */
define('DB_HOST', 'localhost'); // Hôte du serveur MySQL
define('DB_NAME', 'la_base'); // Nom de la base de données
define('DB_USER', 'root'); // Nom d'utilisateur MySQL
define('DB_PASS', ''); // Mot de passe du compte MySQL
/* Options pour la pagination */
define('PAGINA_LIMIT', 5); // Limite de liens avant et après la page actuelle
define('PAGINA_CLASS', 'page'); // Classe des liens "normaux"
define('PAGINA_CURRENT_CLASS', 'active'); // Classe du lien de le page actuelle
define('PAGINA_NEXTLINK_CLASS', 'next'); // Classe du lien "Suivant"
define('PAGINA_PREVIOUSLINK_CLASS', 'previous'); // Classe du lien "Précédent"
define('PAGINA_PERPAGE', 7); // Nombre d'éléments par page
define('PAGINA_LINK', '/teste2.php?page={nb}'); // Structure des liens générés
/* Définition de la fonction getLink()
. Paramètre :
. @page Int : Page
.*/
function getLink($nb) {
return str_replace('{nb}', (string) $nb, PAGINA_LINK);
}
/* Définition de la fonction pagination()
. Paramètres :
. @table String : Nom de le table
. @current Int : Page actuelle
.*/
function pagination($table, $current = 1) {
echo '<ul class="pagination">';
/* On compte le nombre d'entrées dans la table et le nombre de page */
try {
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
} catch(PDOException $e) {
echo 'Erreur lors de la connexion au serveur MySQL.<br/>'.$e->getMessage();
return;
}
$sql = 'SELECT COUNT(*) AS nb FROM '.$table;
$req = $pdo->query($sql);
$data = $req->fetch();
$nb = $data['nb'];
$nbPage = ceil($nb / PAGINA_PERPAGE);
/* Afficher le lien "Précédent" si la page actuelle n'est pas la première */
if($current !== 1) {
echo '<li><a href="'.getLink($current - 1).'" class="'.PAGINA_PREVIOUSLINK_CLASS.'">Précédent</a></li>';
}
/* Afficher les liens avant la page actuelle */
for($i = ($current - PAGINA_LIMIT) ; $i < $current ; $i++) {
if($i > 0) {
echo '<li><a href="'.getLink($i).'" class="'.PAGINA_CLASS.'">'.$i.'</a></li>';
}
}
/* Afficher le lien de la page actuelle */
echo '<li><a href="'.getLink($current).'" class="'.PAGINA_CURRENT_CLASS.'">'.$current.'</a></li>';
/* Afficher les liens suivants */
$nb = 0;
for($i = ($current + 1) ; $i <= $nbPage ; $i++) {
if($nb < PAGINA_LIMIT) {
echo '<li><a href="'.getLink($i).'" class="'.PAGINA_CLASS.'">'.$i.'</a></li>';
$nb++;
}
}
/* Afficher le lien "Suivant" si la page actuelle n'est pas la dernière */
if($current < $nbPage) {
echo '<li><a href="'.getLink($current + 1).'" class="'.PAGINA_NEXTLINK_CLASS.'">Suivant</a></li>';
}
echo '</ul>';
}
if(isset($_GET['page']) && (int) $_GET['page'] !== 0) {
$page = (int) $_GET['page'];
} else {
$page = 1;
}
pagination('la_table', $page);
?>
.pagination {
margin: 0px;
list-style: none;
padding: 0px;
}
.pagination li {
float:left;
}
.pagination li a {
border: solid 1px black;
color: black;
padding-left: 4px;
padding-right: 4px;
margin-left: 3px;
margin-right: 3px;
text-decoration: none;
}
.pagination li a.active {
border-color: red;
}
.pagination li a.next, .pagination li a.previous {
}
.pagination li a.page {
}
Vous n'aimez pas le lifting de Facebook ? Le site Mashable propose cinq étapes pour revenir à l'ancienne présentation du réseau social.