Système de pagination en PHP : ton site sans lag digne de Skyrim
Pagination PHP : affiche des milliers de données sans faire ramer ton site. Exemple simple, bonnes pratiques et erreurs à éviter pour un site fluide.
Quand ton site charge tout… et s’écroule 💥
Tu fais une requête SQL.
Tu affiches tous les résultats.
Tout va bien… jusqu’au jour où ta table dépasse 5 000 lignes.
Résultat :
- page qui rame
- navigateur qui transpire
- serveur qui pleure
- utilisateurs qui quittent le site
Bienvenue dans le monde sans pagination.
Autrement dit : le Fast Travel désactivé.
La pagination, c’est quoi exactement ? 🤔
La pagination consiste à :
- découper les résultats
- afficher une partie à la fois
- charger uniquement ce qui est nécessaire
Au lieu de 10 000 lignes :
tu en montres 10, 20 ou 50 par page.
Simple. Efficace. Indispensable.
Pourquoi la pagination est vitale en PHP 🧠
Sans pagination :
- requêtes SQL lourdes
- pages lentes
- UX catastrophique
- SEO en PLS
Avec pagination :
- requêtes rapides
- chargement fluide
- serveur détendu
- visiteurs contents
Bref :
ton site passe de charrette à cheval de course.
La base : LIMIT et OFFSET en SQL ⚙️
La pagination côté PHP commence par SQL.
SELECT * FROM articles
ORDER BY date DESC
LIMIT 10 OFFSET 0; LIMIT= nombre d’éléments affichésOFFSET= point de départ
Page suivante ?
LIMIT 10 OFFSET 10; Calculer la page courante en PHP 🧮
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 10;
$offset = ($page - 1) * $limit; Traduction :
page 1 commence à 0, page 2 à 10, page 3 à 20…
Classique. Propre.
La requête SQL complète (proprement) 🛠️
$sql = "SELECT * FROM articles
ORDER BY date DESC
LIMIT :limit OFFSET :offset";
$stmt = $bdd->prepare($sql);
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll();
Important :
ne jamais injecter LIMIT/OFFSET directement sans bind.
Injection SQL = dragon niveau 100.
Créer les liens de pagination 🧭
for ($i = 1; $i <= $totalPages; $i++) {
echo '<a href="?page='.$i.'">'.$i.'</a> ';
} Simple. Fonctionnel.
Libre à toi de styliser avec CSS ou Bootstrap.
Calculer le nombre total de pages 📊
$total = $bdd->query("SELECT COUNT() FROM articles")->fetchColumn();
$totalPages = ceil($total / $limit); Sans ça :
impossible de savoir combien de pages afficher.
Les erreurs classiques (et mortelles) ❌
- afficher tous les résultats d’un coup
- oublier le
COUNT() - ne pas sécuriser
$_GET['page'] - faire des requêtes dans une boucle
- pagination côté PHP sans SQL
Si ton serveur rame :
ce n’est pas “normal”, c’est mal paginé.
Pagination vs Scroll infini ⚔️
Pagination :
- SEO-friendly
- simple
- prévisible
Scroll infini :
- cool visuellement
- plus complexe
- moins SEO-friendly
Pour un site PHP classique :
pagination = valeur sûre.
Bonus : pagination propre pour le SEO 📈
Bonnes pratiques :
- URLs claires (
?page=2) - balises
rel="prev"etrel="next" - ne pas indexer les pages inutiles
- éviter le contenu dupliqué
Google aime quand c’est rangé.
Conclusion : la pagination, c’est du respect 💡
Respect :
- du serveur
- de l’utilisateur
- de la base de données
- de ton futur toi
Un site sans pagination, c’est comme Skyrim sans sauvegarde rapide :
ça finit toujours mal.
Alors pagine.
Ton site te dira merci.