/*------------------------------*/
|
/*
|
Titre : Pagination avec gestion des liens
|
|
Auteur : R@f
|
Date édition : 01 Sept 2004
|
Date mise a jour : 26 Sept 2019
|
|
Rapport de la maj:
|
- refactoring du code en PHP 7
|
- fonctionnement du code vérifié
|
*/
|
/*------------------------------*/?>
|
CREATE TABLE IF NOT EXISTS `phpsources_test` (
|
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
`texte` text,
|
PRIMARY KEY (`id`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
--
|
-- Données de la table `phpsources_test`
|
--
|
|
INSERT INTO `phpsources_test` (`id`, `texte`) VALUES
|
(1, 'I love PHP'),
|
(2, 'I do PHP'),
|
(3, 'Hello world'),
|
(4, 'Good morning'),
|
(5, 'Good night'),
|
(6, 'Im Free');
|
|
|
<?php
|
|
// Affichage sur n colonnes
|
// Permet de réaliser l'affichage du résultat
|
// d'une requête dans un tableau sur n colonnes
|
|
$db_server = 'localhost'; // Adresse du serveur MySQL
|
$db_name = ''; // Nom de la base de données
|
$db_user_login = 'root'; // Nom de l'utilisateur
|
$db_user_pass = ''; // Mot de passe de l'utilisateur
|
|
// Ouvre une connexion au serveur MySQL
|
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);
|
|
|
|
|
$nb_results_p_page = 3; // nombre de résultats par page
|
$nb_avant = 4; // nombre de page avant la page courante
|
$nb_apres = 6; // nombre de page après la page courante
|
$premiere = 1; // aficher le lien "première page" (1 ou 0)
|
$derniere = 0; // afficher le lien "dernière page" (1 ou 0)
|
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
|
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)
|
|
// comptage du nombre de lignes de la base
|
$result = mysqli_query($conn,"SELECT count(id) FROM phpsources_test");
|
if(!$result)
|
{
|
// redirection erreur
|
header("location: erreur.php");
|
exit;
|
}
|
$ret = mysqli_fetch_array($result);
|
// nombre de lignes
|
$nb_results = $ret[0];
|
|
// exemple de requete
|
$result = mysqli_query($conn,
|
"SELECT * FROM phpsources_test LIMIT $start, $nb_results_p_page");
|
|
// nombre total de pages
|
$nb_pages = ceil($nb_results / $nb_results_p_page);
|
// nombre de pages avant
|
$avant = $courant > ($nb_avant + 1) ? $nb_avant : $courant - 1;
|
// nombre de pages après
|
$apres = $courant <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $courant;
|
|
// première page
|
if($premiere && $courant - $avant > 1)
|
echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '">Première</a> ';
|
|
// page précédente
|
if($courant > 1)
|
echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?page='.($courant - 1).
|
'">Précédente</a>';
|
|
// affichage des numéros de page
|
for($i = $courant - $avant; $i <= $courant + $apres; $i++)
|
{
|
// page courante
|
if($i == $courant)
|
echo '<span style="color: #FF0000;">' . $i . '</span> ';
|
else
|
echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?page=' . $i . '">'.$i.'</a>';
|
}
|
|
// page suivante
|
if($courant < $nb_pages)
|
echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?page='.($courant + 1).
|
'">Suivante</a>';
|
|
if($derniere && $courant + $apres < $nb_pages)
|
echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?page='. $nb_pages .
|
'">Dernière</a>';
|
?>
|
| |
Haywire
26 Avril 2007 à 00:31hyper merci `R@f` pour ce code