IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Pagination, toujours manque une ligne


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2010
    Messages : 43
    Par défaut Pagination, toujours manque une ligne
    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 afficher tous le cours,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ............
    <?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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?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 d'avance,

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
     if(mysql_fetch_row($result)!=0){ 
    while($data = mysql_fetch_array($result)) {?>
    Apparemment, tu n'as pas très bien compris comment fonctionne le traitement d'un résultat...

    Lorsque ta requête est exécutée, elle te renvoie un jeu de résultats avec un pointeur sur le premier enregistrement. Ensuite, chaque fetch te retourne une ligne et déplace le pointeur sur la ligne suivante ou renvoie false s'il n'y a pas de ligne suivante dans le jeu de résultat, d'où le while pour traiter l'ensemble des résultats.
    Dans ton cas, la première ligne de ta ressource est utilisée dans le if donc elle manque à l'affichage.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2010
    Messages : 43
    Par défaut
    Merci beaucoup j'ai bien comprendre le erreur, si j'enlève le if sa résoudre mon problème mais j'ai utilise le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(mysql_fetch_row($result)!=0)
    a fin d'afficher message Rien trouvé s'il ya rien dans table cours. comment je peux faire ? Merci Bovino

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Toutes les réponses sont dans la doc, donc j'aurais tendance à te dire : relis ton fichu manuel ()
    Il y a de nombreux exemples qui te montrent comment procéder.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] DataGridView - C# : Manque une ligne dans DGV après suppression et rafraichissement
    Par Stéphane8 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/04/2015, 11h41
  2. Manque de place dans une ligne vba
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/08/2013, 18h02
  3. Comment faire pour qu'une vue renvoie toujours une ligne
    Par jfouche dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2009, 10h01
  4. Il me manque une ou deux lignes de code!
    Par intel_mark dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/08/2007, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo