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és
  • OFFSET = 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" et rel="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.