Pagination la galère....
Résolu
Vlandy
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Pagination la galère....
- Pagination powerpoint - Guide
- Comment masquer une photo dans la galerie - Guide
- Sommaire avec pagination - Guide
- Indesign pagination à partir de la 2ème page - Forum InDesign
- Pagination excel plusieurs feuilles ✓ - Forum Excel
7 réponses
salut essayes comme ça:
<?php $page = (isset ($_GET['page']) && is_numeric ($_GET['page'])) ? $_GET['page'] : 1; $nbr = $bdd->q("SELECT count(*) as nbr FROM table"); $messagesParPage = 8; $nombreDePages = ceil($nbr[0]->nbr/$messagesParPage ); $premiereEntree=($page-1)*$messagesParPage; $ligne = $bdd->q ="SELECT * FROM table ORDER BY date DESC LIMIT ".$premiereEntree.', '.$messagesParPage.""; ?> <?php echo '<p align="center">Page : '; for($i=1; $i<=$nombreDePages; $i++) { if($i==$page) { echo ' [ '.$i.' ] '; } else { echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>'; ?>
Bonsoir Alain_42,
Merci d'avoir pris le temps de répondre mais j'ai l'impression que vous m'avez donné le même code car j'obtiens le même résultat
http://img843.imageshack.us/img843/4104/testgz.jpg
je vous est mis dans le lien ci dessus ma pagination actuel qui est vraiment trop grosse et en rouge la pagination que je voudrais essayer de mettre en place. Une pagination vraiment courte ou on ne vois pas toute les pages et qui avance toute seule.
cordialement. bonne soirée
Merci d'avoir pris le temps de répondre mais j'ai l'impression que vous m'avez donné le même code car j'obtiens le même résultat
http://img843.imageshack.us/img843/4104/testgz.jpg
je vous est mis dans le lien ci dessus ma pagination actuel qui est vraiment trop grosse et en rouge la pagination que je voudrais essayer de mettre en place. Une pagination vraiment courte ou on ne vois pas toute les pages et qui avance toute seule.
cordialement. bonne soirée
j'avais surtout simplifié un peu ton code, mais n'avait pas compris que tu ne voulait afficher qu'une partie de la "liste" des numéros de pages
je vais regarder ça de plus près
je vais regarder ça de plus près
vas voir ce site pour une sol en jquery javascript
http://www.javascriptfr.com
ou essayes de t'inspirer de ça:
http://www.javascriptfr.com
ou essayes de t'inspirer de ça:
<?php $page = (isset ($_GET['page']) && is_numeric ($_GET['page'])) ? $_GET['page'] : 1; //$nbr = $bdd->q("SELECT count(*) as nbr FROM table"); $messagesParPage = 8; $nombreDePages = 50; //$nombreDePages = ceil($nbr[0]->nbr/$messagesParPage ); //$premiereEntree=($page-1)*$messagesParPage; //$ligne = $bdd->q ="SELECT * FROM table ORDER BY date DESC LIMIT ".$premiereEntree.', '.$messagesParPage.""; ?> <?php //pagination, on va afficher 7 numéros puis des ..... puis les 3 dernièrs numéros echo '<p align="center">Page : '; //7 num if($page<6){ for($i=1; $i<=7; $i++){ if($i==$page){ echo ' [ '.$i.' ] '; }else{ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } } echo '.........'; for($i=($nombreDePages-3); $i<=$nombreDePages; $i++){ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } }elseif($page>=6 && $page < $nombreDePages-6){ echo ' <a href="pagination_vue_partielle.php?page=1">1</a> '; echo '.........'; for($i=($page-3); $i<=($page+3); $i++){ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } echo '.........'; for($i=($nombreDePages-3); $i<=$nombreDePages; $i++){ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } }elseif($page>=$nombreDePages-6 && $page <= $nombreDePages){ echo ' <a href="pagination_vue_partielle.php?page=1">1</a> '; echo '.........'; for($i=($nombreDePages-8); $i<=($nombreDePages); $i++){ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>'; ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42 Je sais pas comment vous remercier c'est encore mieux et plus élaboré que ce que je souhaité a la base ! Le fait de voir la première et dernière page en tout temps est vraiment bien.
Je vais décortiquer votre code pour essayer de comprendre comment vous avez fait.
En tout cas j'aurais jamais pu faire ça de moi même donc un grand merci.
Passez une bonne journée.
Je vais décortiquer votre code pour essayer de comprendre comment vous avez fait.
En tout cas j'aurais jamais pu faire ça de moi même donc un grand merci.
Passez une bonne journée.
qqs petites modifs
on avait perdu la page active [..]
et mise en couleur de celle ci
on avait perdu la page active [..]
et mise en couleur de celle ci
<?php $page = (isset ($_GET['page']) && is_numeric ($_GET['page'])) ? $_GET['page'] : 1; //$nbr = $bdd->q("SELECT count(*) as nbr FROM table"); $messagesParPage = 8; $nombreDePages = 50; //$nombreDePages = ceil($nbr[0]->nbr/$messagesParPage ); //$premiereEntree=($page-1)*$messagesParPage; //$ligne = $bdd->q ="SELECT * FROM table ORDER BY date DESC LIMIT ".$premiereEntree.', '.$messagesParPage.""; ?> <?php //fonction affichage_numeros function affichage_numeros($page,$i){ if($i==$page){ echo ' [<span style="color:red;"> '.$i.'</span> ] '; }else{ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } } //pagination, on va afficher 7 numéros puis des ..... puis les 3 dernièrs numéros echo '<p align="center">Page : '; //7 num if($page<6){ for($i=1; $i<=7; $i++){ affichage_numeros($page,$i); } echo '.........'; for($i=($nombreDePages-3); $i<=$nombreDePages; $i++){ //echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; echo ' <a href="pagination_vue_partielle.php?page='.$i.'">'.$i.'</a> '; } }elseif($page>=6 && $page < $nombreDePages-6){ echo ' <a href="pagination_vue_partielle.php?page=1">1</a> '; echo '.........'; for($i=($page-3); $i<=($page+3); $i++){ affichage_numeros($page,$i); } echo '.........'; for($i=($nombreDePages-3); $i<=$nombreDePages; $i++){ affichage_numeros($page,$i); } }elseif($page>=$nombreDePages-6 && $page <= $nombreDePages){ echo ' <a href="pagination_vue_partielle.php?page=1">1</a> '; echo '.........'; for($i=($nombreDePages-8); $i<=($nombreDePages); $i++){ affichage_numeros($page,$i); } } echo '</p>'; ?>
ou en BEAUCOUP mieux avec une classe (voir tuto ici http://www.snoupix.com/systeme-de-pagination_tutorial_25.html)
index.php
et la classe fichier class.pagination.php
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> .pagination { font-family:georgia; font-size:0.9em; margin:10px; padding:10px; } .pagination .courante { background:#32B1D0 none repeat scroll 0 0; border:1px solid #918A7B; color:white; border-radius:0.5em; -moz-border-radius:0.5em; margin-left:5px; padding:4px 8px; text-decoration:none; } .pagination .desactive { color:#918A7B; margin-left:5px; padding:3px 7px; text-decoration:none; } .pagination a { background:#f7f5ef none repeat scroll 0 0; background-image:url('background.png'); background-repeat:repeat-x; border:1px solid #918A7B; color:black; margin-left:5px; border-radius:0.5em; -moz-border-radius:0.5em; padding:3px 7px; text-decoration:none; } .pagination a:hover { background:#ECE6D7 none repeat scroll 0 0; border:1px solid #555; color:#4B4438; } </style> </head> <?php $page = (isset ($_GET['page']) && is_numeric ($_GET['page'])) ? $_GET['page'] : 1; //$nbr = $bdd->q("SELECT count(*) as nbr FROM table"); $messagesParPage = 8; $nombreDePages = 50; //$nombreDePages = ceil($nbr[0]->nbr/$messagesParPage ); //$premiereEntree=($page-1)*$messagesParPage; //$ligne = $bdd->q ="SELECT * FROM table ORDER BY date DESC LIMIT ".$premiereEntree.', '.$messagesParPage.""; //Système de pagination utilisant la classe class.pagination.php require_once('class.pagination.php'); Pagination::affiche('index.php','page',$nombreDePages ,$page,2); ?>
et la classe fichier class.pagination.php
<?php /** * Méthode qui gère la pagination * @author Snoupix.com tutoriaux, actualités et encylopédie sur la programmation et le design Web... * Ce code est sous licence Creative Commons: Enjoy! */ class Pagination{ /** * Fonction qui retourne une div de pagination en fonction de plusieurs paramètres * @return $html une chaine contenant une div. * @param object $chemin * @param object $nomget * @param object $total * @param object $courante[optional] * @param object $affichage[optional] */ public static function affiche($chemin,$nomget,$total,$courante=1,$affichage=2){ //variable contenant le code HTML a retourner $html = ''; //Si il n'y a pas plus d'une page on renvoit rien... if($total<=1) return $html; $precedent = $courante-1; $suivant = $courante+1; $textePrecedent = '« préc'; $texteSuivant = 'suiv »'; $html .= '<div class="pagination">'; /*Boutons précédent*/ if ($courante == 2) // si on est sur la page 2, Nous retournons sur la page initiale (permet d'éviter les doublons index.php et index.php?page=1) $html.= Pagination::lien($chemin,$textePrecedent); elseif($courante > 2) // si la page courante est supérieure à 2 le bouton précédent renvoit sur la page dont le numéro est immédiatement inférieur $html.= Pagination::lien($chemin,$textePrecedent,$nomget,$precedent); else // sinon on désactive le bouton précédent $html.= '<span class="desactive">'.$textePrecedent.'</span>'; /*Affichage des numéros des pages*/ if($total < 7 + $affichage*2){ //affiche tous les numéros $html.= ($courante == 1) ? '<span class="courante">1</span>' : Pagination::lien($chemin,'1',$nomget,1); // On boucle toutes les pages restantes boucle for for ($i = 2; $i <= $total; $i++){ if ($i == $courante) // La page courante est affichée différemment $html.= '<span class="courante">'.$i.'</span>'; else $html.= Pagination::lien($chemin,$i,$nomget,$i); } } elseif($total > 5 + ($affichage * 2)){ /*Il y'en a trop donc il va falloir des "..." */ if($courante < 1+($affichage * 2)){ $html.= ($courante == 1) ? '<span class="courante">1</span>' : Pagination::lien($chemin,'1',$nomget,1); // On boucle toutes les pages restantes boucle for for($i = 2; $i < 4 + ($affichage * 2); $i++){ if ($i == $courante)// La page courante est affichée différemment $html.= '<span class="courante">'.$i.'</span>'; else $html.= Pagination::lien($chemin,$i,$nomget,$i); } // les ... pour marquer la troncature $html.= " ... "; // et enfin les deux dernières pages $html.= Pagination::lien($chemin,$total-1,$nomget,$total-1); $html.= Pagination::lien($chemin,$total,$nomget,$total); }elseif($total - ($affichage * 2) > $courante && $courante > ($affichage * 2)){ // on affiche les deux premières pages $html.= Pagination::lien($chemin,'1',$nomget,1); $html.= Pagination::lien($chemin,'2',$nomget,2); // les ... pour marquer la troncature $html.= " ... "; // puis sept pages : les trois précédent la page courante, la page courante, puis les trois lui succédant for ($i= $courante - $affichage; $i<= $courante + $affichage; $i++){ if ($i== $courante) $html.= '<span class="courante">'.$i.'</span>'; else $html.= Pagination::lien($chemin,$i,$nomget,$i); } // les ... pour marquer la troncature $html.= " ... "; // et enfin les deux dernière spages $html.= Pagination::lien($chemin,$total-1,$nomget,$total-1); $html.= Pagination::lien($chemin,$total,$nomget,$total); } else{ // on affiche les deux premières pages $html.= Pagination::lien($chemin,'1',$nomget,1); $html.= Pagination::lien($chemin,'2',$nomget,2); // les ... pour marquer la troncature $html.= " ... "; // et enfin les neuf dernières pages for ($i = $total - (2 + ($affichage * 2)); $i <= $total; $i++){ if ($i == $courante) $html.= '<span class="courante">'.$i.'</span>'; else $html.= Pagination::lien($chemin,$i,$nomget,$i); } } } /*Bouton suivant*/ if ($courante < $total) $html.= Pagination::lien($chemin,$texteSuivant,$nomget,$suivant); else $html.= '<span class="desactive">'.$texteSuivant.'</span>'; $html .= '</div>'; echo $html; } /** * Méthode qui renvoit un lien en fonction de plusieurs paramètres * @return $lien un lien * @param object $chemin notre fichier * @param object $texte texte du lien * @param object $parametre[optional] parametre GET * @param object $valeur[optional] valeur du parametre GET */ public static function lien($chemin,$texte,$parametre='',$valeur=''){ $lien = '<a href="'.$chemin; if(!empty($parametre)) $lien .= '?'.$parametre.'='.$valeur; $lien .= '">'.$texte.'</a>'; return $lien; } } ?>