Page 1 sur 1

pagination précédent suivant

Posté : 12 janv. 2017, 22:29
par pacphil
bonjour comment faut il faire pour deux bouton suivant est précédent svp?
echo '<p align="center">'; //Pour l'affichage, on centre la liste des pages
   for($i=1; $i<=$nombreDePages; $i++){ //On fait notre boucle
          
     //On va faire notre condition
     if($i == $pageActuelle){ //Si il s'agit de la page actuelle...
         echo '<b><span class="bouton_verts">'.$i.'</span></b>'; 
     }else{ //Sinon...
        echo '<b><a href="voir_annonce.php?page='.$i.'" style="color:#0000FF;" class="bouton_verts">'.$i.'</a></b>';
     }
}
echo '</p>';

Re: pagination précédent suivant

Posté : 13 janv. 2017, 09:25
par Spols
echo '<p align="center">'; //Pour l'affichage, on centre la liste des pages
if( $pageActuelle > 1) echo '<b><a href="voir_annonce.php?page='.$pageActuelle-1.'" style="color:#0000FF;" class="bouton_verts">Précedent</a></b>';
   for($i=1; $i<=$nombreDePages; $i++){ //On fait notre boucle
          
     //On va faire notre condition
     if($i == $pageActuelle){ //Si il s'agit de la page actuelle...
         echo '<b><span class="bouton_verts">'.$i.'</span></b>'; 
     }else{ //Sinon...
        echo '<b><a href="voir_annonce.php?page='.$i.'" style="color:#0000FF;" class="bouton_verts">'.$i.'</a></b>';
     }
}
if( $pageActuelle < $nombreDePage) echo '<b><a href="voir_annonce.php?page='.$pageActuelle+1.'" style="color:#0000FF;" class="bouton_verts">Suivant</a></b>';
echo '</p>';

Re: pagination précédent suivant

Posté : 13 janv. 2017, 15:17
par Jc71
Bonjour,

Il faut toujours traiter les cas de figure de la pagination en dehors de la logique d'affichage et ensuite utiliser la pagination calculée dans l'affichage.
Voici un petit exemple

Code : Tout sélectionner

// initialisation des variables private function init_pagination(){    $this->maxpages=10 // valeur à calculer via requête ou autre source.    $this->curpage=1;    $$this->prevpage=0;$nextpage=0; } // calcul pagination private function calc_pagination(int $curpage){   $curpage=intval($curpage);    if($curpage > 0 && $curpage <=$this->maxpage){$this->curpage=$curpage;}else{return false;}   if($curpage===1){$this->prevpage=1;}else{$this->prevpage=$curpage-1;}   if($curpage===$this->maxpage){$this->nextpage=$this->maxpage;}else{$this->nextpage=$curpage+1;}  return true; } public function displayplage(int $curpage){   $ret=$this->calc_pagination($curpage); if($ret===false){ return 'Erreur pagination';}  // affichage de la page en fonction de la page courante, la page précédente et la page suivante calculées et disponibles dans $curpage ou $this->curpage, $this->nextpage, $this->prevpage }

Re: pagination précédent suivant

Posté : 13 janv. 2017, 23:11
par pacphil
bonjour cela est résolut et j'ai fait comme cela et cela pourra peut-être servir à d'autre
$messagesParPage=10; // On met dans une variable le nombre de messages qu'on veut par page 
// On récupère le nombre total de messages
  $requete = $connection->prepare('SELECT count(*) AS id FROM messages WHERE dest=:dest');
  $requete->execute(array(':dest'=> $_SESSION['login']));
  $resultat = $requete->fetch();
  $nombre_messages = $resultat['id'];
//Nous allons maintenant compter le nombre de pages.
$nombreDePages = ceil($nombre_messages / $messagesParPage);
if(isset($_GET['page'])){ // Si la variable $_GET['page'] existe...
     $pageActuelle=intval($_GET['page']);     
     if($pageActuelle>$nombreDePages){ // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     $pageActuelle=$nombreDePages;
     }
}else{ // Sinon
$pageActuelle='1'; // La page actuelle est la n°1    
} 
$premiereEntree=($pageActuelle-1)*$messagesParPage;
puis
$reponse = $connection->prepare('SELECT * FROM messages WHERE dest=:dest ORDER BY date DESC LIMIT '.$premiereEntree.','.$messagesParPage.'');
suivant précédent
if($pageActuelle!=1){
                $precedent=$pageActuelle-1;
                echo'<a class="pagination_suivant" href="message_recu.php?page='.$precedent.'">precedent</a>';    
                     }
	       for($i=1; $i<=$nombreDePages; $i++){
               echo'<a class="pagination" href="message_recu.php?page='.$i.'">'.$i.'</a>';       
                     }
           if($pageActuelle<$nombreDePages){
                 $suivant= $pageActuelle+1;
                 echo'<a class="pagination_suivant" href="message_recu.php?page='.$suivant.'">suivant</a>';   
                     }