pagination

pagination - PHP - Programmation

Marsh Posté le 27-02-2015 à 19:07:31    

Salut
 Je viens d'etre inscrit sur ce forum apres avoir effectue une recherche sur la pagination je viens de decouvrir ces codes qui ont ete poste. Apres les avoir applique dans mon programme, cela fonctionne a merveille lorsque la table a de nombreux enregistrements, mais si la table contient de donnees en petite quantite  les liens de pagination ne fonctionnent pas correctement, voici les code:
<?php
 $Nmax   = 15;
 $nbre_cle  = 7;
 $page   = (int) @$_GET['page'] ? (int) @$_GET['page'] : 1;
 $pagin_pas  = ($page - 1) * $Nmax;
 $page_max = null;
 
 
 
// PARTIE 1
 
 
 
 $dbh = mysql_connect('localhost', 'root', '');
 mysql_select_db('baseflashfoad', $dbh);
 
 $sql  = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM `t_stages` LIMIT %d, %d", $pagin_pas, $Nmax);
 $result = mysql_query($sql);
 
 $count_result = mysql_query("SELECT FOUND_ROWS() as FOUND_ROWS" );
 $count_result = mysql_fetch_object($count_result);
 
 $count  = $count_result->FOUND_ROWS;
 $row = array();
 
 while($data = mysql_fetch_object($result))
 array_push($row, $data);
 
 
 
// PARTIE 2
 
 echo '<div>' . sprintf('Resultat %d à %d sur %d :', $pagin_pas + 1, $pagin_pas + count($row), $count) . '</div>';
 echo '<table>';
 
 foreach($row as $data){
  echo '<tr>';
 
  foreach($data as $value)
  echo "<td>$value</td";
 
  echo '</tr>';  
 }
 
 
 
// PARTIE 3
 
 
 
 $foot  = array();
 $page_max  = ceil($count / $Nmax) + 1;
 
 if(($page + $nbre_cle) < $page_max){
  $start  = $page;
  $end  = $page + $nbre_cle;
 }else{
  $start = $page_max - $nbre_cle;
  $end = $page_max;
 }
 
 
if($page > 1){
  $link = (object) array('text' => '<<', 'num' => '1');
  array_push($foot, $link);
 
  $link = (object) array('text' => '<', 'num' => ($page - 1));
  array_push($foot, $link);
 }
 
 for($i = $start; $i < $end; $i++){
  $link = (object) array('text' => $i, 'num' => $i);  
  array_push($foot, $link);
 }
 
 if($page < $page_max - 1){
  $link = (object) array('text' => '>', 'num' => ($page + 1));
  array_push($foot, $link);
 
  $link = (object) array('text' => '>>', 'num' => $page_max);
  array_push($foot, $link);
 }
 
 echo '</table>';
 echo '<div>';
 
 foreach($foot as $link)
 echo '<a href="?page=' . $link->num . '">' . $link->text . '</a>';
 
 echo '</div>';
?>
 
les variables $Nmax   = 15;
 $nbre_cle  = 7;  
fonctionnent a merveille quand il y a de donnees en grand nombre dans la table mais s'il y a de donnees en quantite tres limitee les liens de paginations dysfonctionnent meme si les donnees s'affichent normalement sur la page.
j'aimerais que les liens de pagination se reduisent automatiquement quand il y a de donnees en petit nombre dans la table.
Je sollicite votre aide qui me serait tres apprecie
merci

Reply

Marsh Posté le 27-02-2015 à 19:07:31   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed