IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Pagination, point de suspension si trop de pages [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Par défaut Pagination, point de suspension si trop de pages
    Bonjour, je fais face à un problème, je suis actuellement entrain d'améliorer mon système de pagination je lui ai donc rajouté 4 boutons en plus :

    - Suivant
    - Précédent
    - Dernière page
    - Première page

    Or j'aimerais maintenant pouvoir gérer une grosse quantité d'utilisateurs dans ma base de donnée et si j'importe trop d'utilisateurs, la pagination devient rapidement ingérable et inutile au vu des nombres de page sauf que je n'arrive pas à trouver la condition me permettant de placer des petits points par exemple au milieu de ma pagination si page > 10 ou quelque chose comme ça..

    Si quelqu'un peut m'aider, voici le code entier de la pagination :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // Requête : TOUT
    $requete_total = $db->prepare($sql_requete);
    $requete_total->execute($sql_params);
    $elem_total = $requete_total->rowCount();
    // ----------------------
    // Pagination
    $elem_page = 10;
    $page_total = ceil($elem_total/ $elem_page);
    if (!empty($_GET['page']) && $_GET['page'] > 0) {
        $pageCourante = intval($_GET['page']);
    } else {
        $pageCourante = 1;
    }
    if ($pageCourante>$page_total) {
        $pageCourante = $page_total;
    }
    $depart_page = ($pageCourante-1) * $elem_page;
    // ----------------------
    // Requête : pour cette page
    $sql_requete_page = $sql_requete . " LIMIT ".$depart_page." , ".$elem_page." ";
    $requete_page = $db->prepare($sql_requete_page);
    $requete_page->execute($sql_params);
    Avec l'ui de la pagination :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
                    <ul class="pagination justify-content-center">
                      <li class="page-item">
                        <li class="page-item"><a class="page-link" href="list.php?page=<?php echo 1; ?>"><i class="fas fa-angle-double-left"></i></a>
                        <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $pageCourante - 1; ?>"><i class="fas fa-chevron-left"></i></a>
            <?php		for ($i=1; $i<=$page_total; $i++) { ?>
                    <?php
            if ($i == $pageCourante) { ?>
              <li class="page-item active"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
      <?php      } else { ?>
        <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
      <?php }
    }?>
    <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $pageCourante + 1; ?>"><i class="fas fa-chevron-right"></i></a>
      <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><i class="fas fa-angle-double-right"></i></a>
            </li>
            </ul>
    En vous remerciant,

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Par défaut
    Salut jreaux,

    Je te remercie, je check ça, je reviens vers toi après avoir essayer d'adapter ça !

    Merci beaucoup

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Par défaut
    Jreaux,

    J'ai du mal à adapter à mon code ton système de pagination, j'ai tenter mais il y a seulement les points qui s'affichent et non les chiffres..

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
       <?php		}
            // -------------
            $numLimit		= 3; 	// Limite : nombre de pages avant/après la page courante
            $sep			= '';	// Séparateur '', '-', '|', '/' : entre les numéros de pages
            // -------------
            $args 			= preg_replace('#(pg=[0-9]+&?)#', '', $_SERVER['QUERY_STRING']);
            $args 			= (!empty($args))?	'&'.$args : '';
            // -------------
              ?>
     
        <li class="page-item"><a class="page-link" href="list.php?page=<?php echo 1; ?>"><i class="fas fa-angle-double-left"></i></a>
                        <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $pageCourante - 1; ?>"><i class="fas fa-chevron-left"></i></a>
            <?php		for ($i=1; $i<=$page_total; $i++) { ?>
              <?php if ($i==1 && $page_total > ($numLimit+1)) {
                  {
                          echo '<li class="page-item"><a class="page-link" href="list.php?page='.$i.$args.'"</a> '.$sep.'...'.$sep;
                      }
                  if (($page_total-1-$numLimit)<$i && $i<($page_total+1+$numLimit)) {
                      if ($i == $pageCourante) { // page courante?>
              <li class="page-item active"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
      <?php
              } else { ?>
        <li class="page-item"><a class="page-link" href="list.php?page=<?php echo $i; ?>"><?php echo "$i"; ?></a>
      <?php }
                  }
              }
            }?>
            <?php if ($i==$page_total && $page_total<($page_total-$numLimit)) {
                echo '...'.$sep.' <li class="page-item"><a class="page-link" href="list.php?page='.$i.$args.'" title="Page '.$i.'">'.$i.'</a>';
            }?>
    Il y a uniquement mes boutons suivant / précédent etcc et 3 point de suspension au milieu..

  5. #5
    Invité
    Invité(e)
    Par défaut
    1- Il s'agit d'une fonction (que tu peux appeler pagination_pages() ).
    Il suffit de l'adapter.

    2- Et mettre là où tu veux la pagination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php pagination_pages( $numPage, $nbreTotalPages ); ?>
    Ce n'est quand même pas si compliqué, si ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2019
    Messages : 83
    Par défaut
    Bah le problème c'est que je dois revoir tout l'affichage de mon tableau et tout le système de pagination du coup.. ?
    Y'aurait-il pas plus simple de que de reprendre à 0, du style une condition permettant de placer des points de suspension au milieu ou quelque chose comme ça?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Points de suspension pour un texte trop long
    Par Robjerey dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 26/02/2015, 10h40
  2. Réponses: 2
    Dernier message: 16/01/2008, 16h16
  3. Réponses: 2
    Dernier message: 18/12/2007, 10h03
  4. requte avec points de suspension
    Par Luther13 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2005, 16h56
  5. LEFT et points de suspension
    Par dany13 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/08/2005, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo