Comment rendre ma pagination responsive

Résolu
Bonjour a tous

encore une nuit blanche a chercher après une chose spéciale et ou je suis resté sans réponse
les paginations automatique que j'ai trouvé sont superbe

car les onglets de paginations se crée au fur et a mesure des éléments a paginer

si on a pas beaucoup d articles on a que quelques onglets

mais dans mon cas je dois paginer + de 160 articles
donc cela me fait par incrément de 10
16 onglets

ce que je souhaiterais c'est de savoir comment réaliser
ceci
1/2/3.....45/46/47

voici ce qui se passe pour l instant en responsive

comment résoudre le soucis si possible sans javascript

j'ai bien trouver cette documentation mais comment la mettre en place

https://bootstrap-vue.org/docs/components/pagination-nav

voici mon code

     <div class="container" style=" max-width: 100%;margin:auto;">
                    <nav>
                    <ul class="pagination">
                        <!-- Lien vers la page précédente (désactivé si on se trouve sur la 1ère page) -->
                        <li class="page-item <?= ($currentPage == 1) ? "disabled" : "" ?>">
                            <a href="?page=<?= $currentPage - 1 ?>" class="page-link">Précédente</a>
                        </li>
                        <?php for($page = 1; $page <= $pages; $page++): ?>
                          <!-- Lien vers chacune des pages (activé si on se trouve sur la page correspondante) -->
                          <li class="page-item <?= ($currentPage == $page) ? "active" : "" ?>">
                                <a href="?page=<?= $page ?>" class="page-link"><?= $page ?></a>
                            </li>
                        <?php endfor ?>
                          <!-- Lien vers la page suivante (désactivé si on se trouve sur la dernière page) -->
                          <li class="page-item <?= ($currentPage == $pages) ? "disabled" : "" ?>">
                            <a href="?page=<?= $currentPage + 1 ?>" class="page-link">Suivante</a>
                        </li>
                    </ul>
                </nav>
            
        </div>

9 réponses

  1. bonjour
    merci pour le lien
    mais je préfère la solution de jordane qui est très légère
    1. Modérateur
      Hello,

      Je reviens sur cette discussion...

      Perso, j'aurais sûrement fait un truc du genre
      <?php
      function getNavLink($currentPage=1,$numPage=1){
        $disabled = $currentPage == $numPage ? "disabled" : "" ;
        return  '<li class="page-item '.$disabled.'">
              <a href="?page='.$numPage.'" class="page-link">'.$numPage.'</a>
          </li>';
      }
      ?>
      
      <div class="container" style=" max-width: 100%;margin:auto;">
        <nav>
        <ul class="pagination">
          <!-- Lien vers la page précédente (désactivé si on se trouve sur la 1ère page) -->
          <?php
          //première page 
            if($currentPage >2 ){
              echo getNavLink($currentPage,1 );
            }
          
            //page actuelle moins 1
            if($currentPage >1 ){
              echo getNavLink($currentPage,$currentPage -1);
            }
            
            //page actuelle 
            echo getNavLink($currentPage,$currentPage);
            
            //page actuelle plus 1
            if($currentPage < $pages + 1 ){
              echo getNavLink($currentPage,$currentPage +1);
            }
            
            //Dernière page
            if($currentPage < $pages + 2 ){
              echo getNavLink($currentPage,$currentPage +2);
            }
            
          ?>
        </ul>
      </nav>
      
      </div>
      

      1. Modérateur
        pardon...

        Oui
           
              //page actuelle plus 1
              if($currentPage < $pages - 1 ){
                echo getNavLink($currentPage,$currentPage +1);
              }
              
              //Dernière page
              if($currentPage < $pages - 2 ){
                echo getNavLink($currentPage,$currentPage +2);
              }
              
      2. Modérateur
        @flexi2202Je ne suis pas bien réveillé ce matin..
              //page actuelle plus 1
              if($currentPage < $pages  ){
                echo getNavLink($currentPage,$currentPage +1);
              }
              
              //Dernière page
              if($currentPage < $pages - 1 ){
                echo getNavLink($currentPage,$currentPage +2);
              }
        
      3. @jordane45nickel jordane un super grand merci ,
        c 'est super

        bon week end
        et merci pour toute ton aide depuis des mois
    2. voila tout fonctionne

      encore un super très grand merci jordane
      1. merci pour l aide
        si je dis que cela fait 4 h00 que je cherche , tu ne me croiras pas et pourtant ..

        voila en fait exact une fois la boucle partie il ne me reste plus que suivant et précédant et cela fonctionne

          <?php for($page = 1; $page <= $pages; $page++): ?>
                                  <!-- Lien vers chacune des pages (activé si on se trouve sur la page correspondante) -->
                                  <li class="page-item <?= ($currentPage == $page) ? "active" : "" ?>">
                                        <a href="?page=<?= $page ?>" class="page-link"><?= $page ?></a>
                                    </li>
                                <?php endfor ?>


        voila ce que je viens de faire
          <li class="page-item"><a class="page-link " href="?page=<?= $page=1 ?>"><span>1</span></a></li>
                                     <li class="page-item"><a class="page-link " href="?page=<?= $page=2 ?>"><span>2</span></a></li>
                                     <li class="page-item"><a class="page-link " href="?page=<?= $page=3 ?>"><span>3</span></a></li>

        et donc de cette façon il ne voit 3 pages et pour voir les suivantes il doit cliquer sur suivant , si j'ai bien compris
        1. <?php for($page = 1; $page <= $pages; $page++): ?>


          donc je reviens pour essayer de comprendre , car aucun essais que je fais ne fonctionne

          $page = 1; 
          est la page du départ
          si je la modifie je suis en page 2 ou 3

          $page <= $pages
          c est ma page courante

          et enfin
          $page++
          c est l incrément des pages

          donc d après ce que je peux comprendre je dois modifier cette partie
          $page <= $pages

          si j écris ceci

          $page,$page  <= $pages
          cela plante entre autre
          j'ai essaye une multitude de combinaisons
          1. Modérateur
            Non mais il faut enlever la boucle
            Et mettre trois boutons
            : un pour la page précédente un pour la page en cours et un pour la page suivante.
            Quand je dis un..., tu peux faire deux ou trois à toi de voir..
        2. bonjour Jordane

          merci pour l aide
          Mais sur ce coup j avoue ne pas trop bien suivre
          1. Modérateur
            Bonjour,

            Au lieu de faire une boucle sur tes X pages
             <?php for($page = 1; $page <= $pages; $page++): ?>
            


            Modifies ton code pour ne créer que 1 page avant, la page en cours, et une ou deux pages après ...

            C'est plus une question d'algorithmie que de html ou de css ....