Pagination, toujours manque une ligne

Résolu/Fermé
supupoff Messages postés 312 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 8 janvier 2021 - Modifié par jordane45 le 6/05/2015 à 13:16
supupoff Messages postés 312 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 8 janvier 2021 - 6 mai 2015 à 21:50
Bonjour,

j'essaye de faire une pagination a mon table de cours, ça marche masi toujours manque une ligne et si j'ai qu'un seul enregistrement dans table cours s'affiche pas, ceci comment je me débrouille

collecte cours de DB, selon le niveau ( nivo) ou tous le cours,

<?php


if (isset($_GET['nivo']) and !empty($_GET['nivo'])){
   $nivo = $_GET['nivo'];
    $sql = "SELECT * from cours where nivo='$nivo' AND idpro='$id'";
    }
   else{
   $sql = "SELECT * FROM cours WHERE  idpro='$id' order by id";
    }

if(isset($_GET['starting'])){ //starting page
    $starting=$_GET['starting'];
}else{
$starting=0;
}
$recpage = 10;
$obj = new pagination_class($sql,$starting,$recpage);  
$result = $obj->result;
?>


Affichage

............
<?php
 if(mysql_fetch_row($result)!=0){ 
while($data = mysql_fetch_array($result)) {?>
<tbody>
 <tr>
     
 <td class="first style1"><?php echo $data['matiere']; ?> </td>
    
 <td><?php echo $data['description']; ?></td>
 <td> <a  href="modifierArt.php?idart=<?php echo $data['id']; ?>" title="Modifier cours ">  <img src="images/edit-icon.gif" width="16" height="16" alt="" />  </a></td>
 <td><a  href="cours_html.php?idart=<?php echo $data['id'];?>&action=sup" title="    Supprimer cours    "  onclick="return confirm('Etes vous sur de vouloir supprimer ce cours ?');"> <img src="images/hr.gif" width="16" height="16" alt="" /></a></td>
 </tr></tbody> <?php } ?>
 <tfoot>
     <tr id="nav"><td colspan="5"><div><?php echo $obj->anchors; ?></div></td></tr>
     <tr id="total"><td colspan="5"><?php echo $obj->total; ?></td></tr>
   <?php } else{ ?>
   <tr><td align="center" colspan="5">Rien trouvé/td>
   </tr></tfoot>
    <?php } ?>



Pagination_class.php

<?php
class Pagination_class{
 var $result;
 var $anchors;
 var $total;
 function Pagination_class($qry,$starting,$recpage)
 {    
     include('_db.php');
     $rst  = mysql_query($qry) or die(mysql_error());
  $numrows = mysql_num_rows($rst);
  $qry   .= " limit $starting, $recpage";
  $this->result = mysql_query($qry) or die(mysql_error());
  $next  = $starting+$recpage;
  $var  = ((intval($numrows/$recpage))-1)*$recpage;
  $page_showing = intval($starting/$recpage)+1;
  $total_page = ceil($numrows/$recpage);

  if($numrows % $recpage != 0){
   $last = ((intval($numrows/$recpage)))*$recpage;
  }else{
   $last = ((intval($numrows/$recpage))-1)*$recpage;
  }
  $previous = $starting-$recpage;
  $anc = "<ul id='pagination-flickr'>";
  if($previous < 0){
   $anc .= "<li class='previous-off'>Premier</li>";
   $anc .= "<li class='previous-off'>Préc</li>";
  }else{
   $anc .= "<li class='next'><a href='articles_.php?starting=0'>Premier </a></li>";
   $anc .= "<li class='next'><a href='articles_.php?starting=$previous'>Préc </a></li>";
  }
  
  ################If you dont want the numbers just comment this block############### 
  $norepeat = 4;//no of pages showing in the left and right side of the current page in the anchors 
  $j = 1;
  $anch = "";
  for($i=$page_showing; $i>1; $i--){
   $fpreviousPage = $i-1;
   $page = ceil($fpreviousPage*$recpage)-$recpage;
   $anch = "<li><a href='articles_.php?starting=$page'>$fpreviousPage </a></li>".$anch;
   if($j == $norepeat) break;
   $j++;
  }
  $anc .= $anch;
  $anc .= "<li class='active'>".$page_showing."</li>";
  $j = 1;
  for($i=$page_showing; $i<$total_page; $i++){
   $fnextPage = $i+1;
   $page = ceil($fnextPage*$recpage)-$recpage;
   $anc .= "<li><a href='articles_.php?starting=$page'>$fnextPage</a></li>";
   if($j==$norepeat) break;
   $j++;
  }
  ############################################################
  if($next >= $numrows){
   $anc .= "<li class='previous-off'>Suiv</li>";
   $anc .= "<li class='previous-off'>Dernier</li>";
  }else{

   $anc .= "<li class='next'><a href='articles_.php?starting=$next'>Suiv </a></li>";
   $anc .= "<li class='next'><a href='articles_.php?starting=$last'>Dernier</a></li>";
  }
   $anc .= "</ul>";
  $this->anchors = $anc;
  
  $this->total = "Page : $page_showing <i> de   </i> $total_page .  Résultat Total: $numrows";
 }
}
?>


Merci,


La chance aide parfois, le travail toujours.
A voir également:

1 réponse

Bonjour

if(mysql_fetch_row($result)!=0){ 
while($data = mysql_fetch_array($result)) {?>


Le mysql_fetch_row lit une ligne dans $result, cette ligne ne sera jamais affichée : les mysql_fetch_array qui suivent ne "remontent" pas dans $result.
Je suppose que tu voulais faire mysql_num_rows() qui te donne le nombre de lignes de la réponse.

Au passage, il est fortement déconseillé d'utiliser les fonctions mysql_* qui sont obsolètes et ne seront bientôt plus supportées du tout par PHP. Utilise plutôt mysqli_* ou PDO.
2
supupoff Messages postés 312 Date d'inscription dimanche 27 novembre 2011 Statut Membre Dernière intervention 8 janvier 2021 34
6 mai 2015 à 21:50
Merci,
0