Pagination News
Résolu/Fermé
TRUNCKS
Messages postés
1030
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
3 juin 2023
-
24 mars 2011 à 17:49
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 24 mars 2011 à 18:30
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 24 mars 2011 à 18:30
A voir également:
- Pagination News
- Sommaire avec pagination - Guide
- Msn news - Télécharger - Médias et Actualité
- Problème pagination word ✓ - Forum Word
- Pagination word - Guide
- Erreur lors d'une opération de pagination ✓ - Forum Windows
1 réponse
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 499
24 mars 2011 à 18:30
24 mars 2011 à 18:30
Salut.
Il va falloir compter le nombre d'entrées dans la table et diviser le total par le nombre de news par page.
Le nombre obtenu correspondra au nombre de page.
Pour éviter d'avoir des nombres décimaux, tu peux utiliser la fonction ceil() qui arrondi à l'entier supérieur.
Une fois que tu as le nombre de page, tu peux, à l'aide d'une boucle, créer chaque lien vers chaque page.
Dans le lien, il faut indiquer la page grâce aux paramètres dans l'URL (GET).
Exemple : /news.php?page=3 pour la page 3.
Dans le code qui récupère les news, il faut indiquer le premier élément à prendre.
Ce premier élément est : (page_actuelle - 1) * nb_news_par_page
Dans le cas où $_GET['page'] n'existe pas, la page sera la n°1.
Et il faut également indiquer le nombre d'entrées à prendre depuis cet élément.
Pour cette étape, il faut utiliser la clause LIMIT.
En code, ça donne :
Il va falloir compter le nombre d'entrées dans la table et diviser le total par le nombre de news par page.
Le nombre obtenu correspondra au nombre de page.
Pour éviter d'avoir des nombres décimaux, tu peux utiliser la fonction ceil() qui arrondi à l'entier supérieur.
Une fois que tu as le nombre de page, tu peux, à l'aide d'une boucle, créer chaque lien vers chaque page.
Dans le lien, il faut indiquer la page grâce aux paramètres dans l'URL (GET).
Exemple : /news.php?page=3 pour la page 3.
Dans le code qui récupère les news, il faut indiquer le premier élément à prendre.
Ce premier élément est : (page_actuelle - 1) * nb_news_par_page
Dans le cas où $_GET['page'] n'existe pas, la page sera la n°1.
Et il faut également indiquer le nombre d'entrées à prendre depuis cet élément.
Pour cette étape, il faut utiliser la clause LIMIT.
En code, ça donne :
<?php define('NEWS_PAR_PAGE', 5); include 'connexion-pdo.php'; // 1) *** Afficher les news *** // Numéro de la page $page = isset($_GET['page']) ? (int) $_GET['page'] : 1; if($page < 1) $page = 1; // Premier élément $premier = ($page - 1) * NEWS_PAR_PAGE; // Requête SQL $sql = 'SELECT * FROM news ORDER BY id DESC LIMIT '.$premier.','.NEWS_PAR_PAGE; $result = $bdd->query($sql); // Affichage des news while($news = $result->fetch()) { include 'tpl/news-single.tpl.php'; // À remplacer par ce que tu veux } // 2) *** Pagination *** // Nombre de page $sql = 'SELECT COUNT(*) AS nb FROM news'; $result = $bdd->query($sql); $firstRow = $result->fetch(); $nbNews = $firstRow['nb']; $nbPage = ceil( $nbNews / NEWS_PAR_PAGE ); // Affichage des liens for($i = 1 ; $i <= $nbPage ; $i++) { echo '<a href="news.php?page='.$i.'">'.$i.'</a> '; } ?>J'ai codé ça directement dans le formulaire de réponse, il y a sans doute des erreurs.