Groupe : Membres Messages : 70 |
Salutation à tous, voici mon nouveau problème: J'ai donc mon système de pagination, mais le hic c'est que si il doit afficher 45 pages, il va afficher 1234567890111213......45 sans les pointillés. J'aimerais afficher le nombre de pages de la manière suivante: 12345....X (X étant la dernière page, si il y a moins de 10 pages) et 123...XYZ (X Y Z étant les trois dernière pages, si il y a plus de 10 pages) Merci de m'aider, SVP je galère, c'est assez difficile ce truc Merci ++<attention></attention> PHP Dev en force |
Groupe : Membres Messages : 70 |
Bon ya plus personne sur ce forum,
PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Pourrais-tu nous donner le code de ton système de pagination ? C'est plus simple si on apporte les modifs sur quelque chose de déjà existant =). |
Groupe : Membres Messages : 70 |
Oui ok, je vous joins ça demain. Merci, je croyais qu'il yavais plus personne .+++ PHP Dev en force |
Groupe : Membres Messages : 70 |
Voici le code: Code PHP: <?php $nombreDeMessagesParPage = 5; $retour = web_query('SELECT COUNT(*) AS msgrep FROM replyforum WHERE titrerep="'.$_GET['sujet'].'" AND catnamerep="'.$_GET['cat'].'"'); $donnee = mysql_fetch_array($retour); $totalDesMessages = $donnee['msgrep']; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); if ($nombreDePages <= 2) { echo ""; } if ($nombreDePages >= 2) { echo 'Page: '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { // Si le nombre de page est egale ou inferieur a 5 on affiche seulement les pages comme suit : 12345 echo '<a href="index.php?name=voireponse&sujet=';echo $_GET['sujet'];echo'&npage=' . $i . '">' . $i . '</a>'; } } if (isset($_GET['npage'])) { $npage = $_GET['npage']; // On récupère le numéro de la page indiqué dans l'adresse } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $npage = 1; // On se met sur la page 1 (par défaut) } $premierMessageAafficher = ($npage - 1) * $nombreDeMessagesParPage; $rep_subjet = web_query('SELECT * FROM replyforum WHERE titrerep="'.$_GET['sujet'].'" AND catnamerep="'.$_GET['cat'].'" ORDER BY id ASC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); ?> Donc comme je dit, j'aimerais une système de pagination dans le style Page: 1234....(dernière page si plus de 7 page). J'ai essayer en mettant une variable définissant la page actuelle, mais en vain. Voici donc ceci, j'espère que ça pourras vous aider. Merci de votre aide, @++ PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Essaie avec ça : Code PHP: for ($i = 1 ; $i <= $nombreDePages ; $i++) { // Si le nombre de page est egale ou inferieur a 5 on affiche seulement les pages comme suit : 12345 if($nombreDePages > 7 && $i > 4) { if($i == 5) echo '...'; if($i == $nombreDePages) echo '<a href="index.php?name=voireponse&sujet=';echo $_GET['sujet'];echo'&npage=' . $i . '">' . $i . '</a>'; } else { echo '<a href="index.php?name=voireponse&sujet=';echo $_GET['sujet'];echo'&npage=' . $i . '">' . $i . '</a>'; } } à la place de ça : Code PHP:
for ($i = 1 ; $i <= $nombreDePages ; $i++) { // Si le nombre de page est egale ou inferieur a 5 on affiche seulement les pages comme suit : 12345 echo '<a href="index.php?name=voireponse&sujet=';echo $_GET['sujet'];echo'&npage=' . $i . '">' . $i . '</a>'; } |
![]() Groupe : Membres Messages : 134 |
Ta variable qui défini ta page actuelle elle existe forcément puisque tu as $_GET['npage']
Donc il suffit que dans ta boucle FOR qui affiche les pages, tu créés des condition IF imbriqué les unes dans les autres autant de fois que tu veux afficher tes pages, en commençant par un isset sur npage pour prendre en compte la première visite sur la page. Et pour afficher les pages que tu veux tu fait par exemple IF ($_GET['npage'] == i + 3) echo i; pour afficher la troisieme page aprés la page actuelle. Tu vas avoir un code un peut long, mais ça me parrait etre le plus simple. J'espère que j'ai été clair. |
![]() Groupe : Admins Messages : 2070 |
Ah oui, dans mon code j'ai pas pris en compte la page en cours . Il va tout le temps t'afficher 1234...DERNIEREPAGE.EDIT : Essaie avec ça : Code PHP: if (isset($_GET['npage'])) { $npage = $_GET['npage']; // On récupère le numéro de la page indiqué dans l'adresse } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $npage = 1; // On se met sur la page 1 (par défaut) } if ($nombreDePages <= 2) { echo ''; } if ($nombreDePages >= 2) { echo 'Page: '; $pointsBeforePage = false; // Défini si on a déjà affiché les ... avant la page en cours $pointsAfterPage = false; // Défini si on a déjà affiché les ... après la page en cours for ($i = 1 ; $i <= $nombreDePages ; $i++) { // Si le nombre de page est egale ou inferieur a 5 on affiche seulement les pages comme suit : 12345 if($i == $npage || ($i - 1) == $npage || ($i - 2) == $npage || ($i + 1) == $npage || ($i + 2) == $npage || $i == $nombreDePages || $i == 1) { echo '<a href="index.php?name=voireponse&sujet=';echo $_GET['sujet'];echo'&npage=' . $i . '">' . $i . '</a>'; } else { if($i < $npage && $pointsBeforePage == false) { echo '...'; $pointsBeforePage = true; } if($i > $npage && $pointsAfterPage == false) { echo '...'; $pointsAfterPage = true; } } } } à la place de : Code PHP:
if ($nombreDePages <= 2) { echo ""; } if ($nombreDePages >= 2) { echo 'Page: '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { // Si le nombre de page est egale ou inferieur a 5 on affiche seulement les pages comme suit : 12345 echo '<a href="index.php?name=voireponse&sujet=';echo $_GET['sujet'];echo'&npage=' . $i . '">' . $i . '</a>'; } } if (isset($_GET['npage'])) { $npage = $_GET['npage']; // On récupère le numéro de la page indiqué dans l'adresse } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $npage = 1; // On se met sur la page 1 (par défaut) } |
![]() Groupe : Membres Messages : 134 |
tu prends pas en compte la première et dernière page avec ton code lbeetls01, pour aller plus rapidement en début ou fin de liste, même si il y à 50 pages. |
Groupe : Membres Messages : 70 |
Citation: Drahl tu prends pas en compte la première et dernière page avec ton code lbeetls01, pour aller plus rapidement en début ou fin de liste, même si il y à 50 pages. Si je t'assure miter, cela fonctionne trés bien! Merci à toi lbeetls01, ca donne bien: (tester avec 10 pages) 123...10 si en première page ou 1...34567...10 si dans pages du milieu ou 1...8910 si en dernière page Merci à toi! PHP Dev en force |
![]() Groupe : Membres Messages : 134 |
oki dsl, tan mieux alors. |
![]() Groupe : Admins Messages : 2070 |
Content d'avoir pu t'aider et que ça marche =). |