<?php
/*------------------------------*/
/*
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;
}
// nombre de lignes
$nb_results = $ret[0];
// exemple de requete
"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