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

Langage PHP Discussion :

Comment affichage page/page sous cette forme : 1-2-3- - - - - - -15-16-17 ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut Comment affichage page/page sous cette forme : 1-2-3- - - - - - -15-16-17 ?
    Bonjour j'ai fait un affichage page par page, mais si le nombre de page s'affiche en continue, ce que je souhiaterai c'est qu'à partir de tel nombre de pages l'affichage des liens ce fassent de cette maniére :

    1-2-3 ....... 12-13-14 et non 1-2-3-4-5-6-7-8-9-10-11-12-13-14.

    Voici le code de ma fonction :

    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
    function affichePages($nb,$page,$total) {   
     
    //Passage de mes variables 
    $type = $_GET['type']; 
    $xord = $_GET['xord']; 
    $p = $_GET['p']; 
     
    //Si $p==0 on lui assigne la valeur 1 
    if ($p=="") {$p="1";}
     
    $nbpages=ceil($total/$nb); $numeroPages = 1; 
    $compteurPages = 1; 
    $limite = 0; 
     
    echo '<table border = "0" ><tr>'."\n"; 
     
    while($numeroPages <= $nbpages) 
    {  
    if($p == $numeroPages)  
     
    {  echo "<td class='faq'><strong> [".$p."]</strong></td>"."\n"; } 
     
     else  {  echo '<td class="faq"><a href = "'.$page.'?p='.$numeroPages.'&limite='.$limite.'&type='.$type.'&xord='.$xord.'">'.$numeroPages.'</a></td>'."\n"; }  
     
     $limite = $limite + $nb; 
     $numeroPages = $numeroPages + 1; 
     $compteurPages = $compteurPages + 1; 
     if($compteurPages == 10) {  $compteurPages = 1; echo '<br>'."\n"; }  }  
     
     echo '</tr></table>'."\n"; 
     }
    Merci à tous pour votre aide

    Aurore

  2. #2
    Membre confirmé Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Par défaut
    J'avoue ne pas trop comprendre ton code actuel.

    Mais sinon tu ne peux pas tout simplement compter le nombre de pages et faire un if où tu n'affiche que si le n° de page est > au n° de page actuel - 2 ET < au n° de page actuel + 2 OU > au nombre de page total - 3.

    De sorte que tu auras les deux pages précédentes, les deux suivantes et les 3 dernieres.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut
    Salut,

    oui voilà c'est ce que je veux faire mais ce que je cherche c'est comment obtenir ce résultat.

    Aurore

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Par défaut
    Et si je veux accéder à la page 7, je fais comment ? Question subsidiaire : une fois que je suis sur la page 7, quels sont les numéros affichés ?

    Quoi qu'il en soit, il suffit de rajouter un test avant ton opération d'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
     
     else {
        if($numeroPages > $limitInferieure && $numeroPages > $limitSuperieure){
            // Si le numero de page est compris entre les deux limites, on affiche un point
            echo '<td class="faq"> . </td>';
        } else {
            // Sinon, on affiche le numero et le lien
            echo '<td class="faq"><a href = "'.$page.'?p='.$numeroPages.'&limite='.$limite.'&type='.$type.'&xord='.$xord.'">'.$numeroPages.'</a></td>'."\n";
        }
    }
    ...

  5. #5
    Membre confirmé Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Par défaut
    Bah je peux te donner des idées mais je n'ai pas vraiment le temps de te faire le code. Surtout que j'ai du mal à comprendre à quoi correspondent les variables que ta fonction prend en entrée et le code en lui même.

    A la limite commente le déjà ça aidera.

    EDIT : Et ben pour aller à la page 7 il faut avancer un max petit à petit jusqu'à y être (ce genre de sommaire est trés commun sur le net).

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Par défaut
    Citation Envoyé par Momodedf
    EDIT : Et ben pour aller à la page 7 il faut avancer un max petit à petit jusqu'à y être (ce genre de sommaire est trés commun sur le net).
    Ce que je connais sur le web, c'est justement l'inverse en règle générale Par exemple, si tu es à la page 6, te ne vois que celles qui sont adjacentes :

    << < . . . 5 - 6 - 7 . . . > >>

    à l'exception des premières pages et des dernières ou la navigation ressemble à ça :

    << < 1 - 2 - 3 . . . > >>

    << < . . . 21 - 22- 23 > >>

    C'est pour ça que je comprends pas bien le but de ce code.

  7. #7
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut
    Voici le code commenté :

    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
    function affichePages($nb,$page,$total) {   
     
    //Passage de mes variables 
    $type = $_GET['type']; //variable qui définit le type de l'acte
    $xord = $_GET['xord']; //variable qui définit l'ordre d'affichage
    $p = $_GET['p']; //variable qui nous donne le n° de la page en cours
     
    //Si $p==0 on lui assigne la valeur 1 
    if ($p=="") {$p="1";}
     
    $nbpages=ceil($total/$nb); //Calcul du nombre de pages par rapport à la requête SQL
    $numeroPages = 1; //Valeur initial du numéro de la page
    $compteurPages = 1; 
    $limite = 0; //Limite pour la requête SQL initial
     
    echo '<table border = "0" ><tr>'."\n"; 
     
    while($numeroPages <= $nbpages) 
    {  
     
    if($p == $numeroPages)  
     
    {  echo "<td class='faq'><strong> [".$p."]</strong></td>"."\n"; } //affichage de la page courante sans le lien
     
     else  {  echo '<td class="faq"><a href = "'.$page.'?p='.$numeroPages.'&limite='.$limite.'&type='.$type.'&xord='.$xord.'">'.$numeroPages.'</a></td>'."\n"; } //Lien pour les autres pages 
     
     $limite = $limite + $nb; //Calcul de la limite pour la requête
     $numeroPages = $numeroPages + 1; 
     $compteurPages = $compteurPages + 1; 
     if($compteurPages == 10) {  $compteurPages = 1; echo '<br>'."\n"; }  }  
     
     echo '</tr></table>'."\n"; 
     }
    Cold Hand => j'ai rajouté ton test mais en fait cela m'affiche ça :

    1-2-3 .............

    en attribuant à mes variables $limitInferieure et $limitSuperieure la valeur 3

    Merci

    Aurore

  8. #8
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Par défaut
    Si tu mets la même valeur pour ta limite inférieure et ta limite supérieure, c'est normal que ça marche pas terrible... Par exemple, si tu veux afficher :

    1 - 2 - 3 . . . . . 10 - 11 - 12

    Il faut utiliser 3 comme limite inférieure et 10 comme supérieur. Tous les chiffres entre 3 et 10 ne seront donc pas affichés.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/12/2016, 04h07
  2. Réponses: 1
    Dernier message: 19/03/2013, 23h22
  3. Comment afficher les données sous cette forme?
    Par hittony dans le forum Cognos
    Réponses: 0
    Dernier message: 07/06/2010, 17h23
  4. Réponses: 8
    Dernier message: 07/03/2007, 09h34
  5. [MySQL] Affichage par page page : pages blanches à la fin
    Par carelha dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/04/2006, 14h27

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