5568 sujets

Sémantique web et HTML

Bonjour,

J'ai crée un pagination, mais je souhaiterais que celle ci n'affiche que les 5 pages précédentes et les 5 pages suivantes.
Actuellement toutes les pages sont affichées.

Voici mon code actuel :

                           //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.


/// NOMBRE PAR PAGE

$messagesParPage=50;

/// NOMBRE DE PAGES NECCESSAIRES

$nombreDePages=ceil($total/$messagesParPage);


if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $page=intval($_GET['page']);
 
     if($page>$nombreDePages) // Si la valeur de $page (le numéro de la page) est plus grande que $nombreDePages...
     {
          $page=$nombreDePages;
     }

$premiereEntree=($page-1)*$messagesParPage; // On calcul la première entrée à lire
     
}
else // Sinon
{
     $page=1; // La page actuelle est la n°1    

$premiereEntree=0; // On calcul la première entrée à lire

}


echo '<div class="box-tools">
                <ul class="pagination pagination-sm no-margin pull-right">';
 if($page !=1)

  {

$pageprecedente = ($page-1);

    echo'<li><a href="admin_contenus_missions.php?page='.$pageprecedente.'">&laquo;</a></li> ';}

 //Pour l'affichage, on affiche les 5 avants et les 5 apres

for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
         echo ' 
          <li><a href="admin_contenus_missions.php?page='.$i.'">'.$i.'</li></a>
           ';
}


if($page<$nombreDePages) // Si la valeur de $page (le numéro de la page) est plus grande que $nombreDePages...
     
     {

$pagesuivante = ($page+1);

    echo'<li><a href="admin_contenus_missions.php?page='.$pagesuivante.'">&raquo;</a></li> ';
     }


Merci d'avance pour votre aide.
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
         if(($i >= $nombreDePages-5 || $i <= $nombreDePages+5) && $i != $page)
         echo ' 
          <li><a href="admin_contenus_missions.php?page='.$i.'">'.$i.'</li></a>
           ';
}


Salut,

Il y a plusieurs façon d'obtenir ce que tu souhaites, je te proposes cette solution qui ne modifie quasiment pas ton code.
On rajoute seulement une condition.
Je n'ai pas testé le code mais cela devrait fonctionner.

Bonne journée
Cela ne change rien en fait j'ai toujours toute la pagination.

for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
  

  if(($i >= $nombreDePages-5 || $i <= $nombreDePages+5) && $i != $page)if(($i >= $nombreDePages-5 || $i <= $nombreDePages+5) && $i != $page) {

         echo ' 
          <li><a href="admin_contenus_missions.php?page='.$i.'">'.$i.'</li></a>
           ';
         }

}
Bonjour,
Si je ne me trompe pas :
La boucle comment 5 pages avant la page demandée
jusqu'a 6 pages après la page demandée

$iStart = $page-5;
if($iStart < 0){
$iStart = 0;
}
for($i=$iStart; $i< $page+6 && $i<=$nombreDePages; $i++) //On fait notre boucle
{
         echo ' 
          <li><a href="admin_contenus_missions.php?page='.$i.'">'.$i.'</li></a>
           ';
}

Modifié par aliasdmc (24 Nov 2017 - 20:12)