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 :

Soucis de pagination [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut Soucis de pagination
    Bonsoir,

    Je suis confronté à un soucis de pagination que je ne parviens pas à résoudre. Pour le calcul des pages, c'est ok.

    Soit la fonction de départ :
    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
     
        function pagination($current_page, $nb_pages, $link='?page=%d', $around=3, $firstlast=1)
        {
           $pagination = '';
           $link = preg_replace('`%([^d])`', '%%$1', $link);
           if ( !preg_match('`(?<!%)%d`', $link) )
           $link .= '%d';
           if ( $nb_pages > 1 ) {
     
              // Lien précédent
              if ( $current_page > 1 )
                 $pagination .= '<a class="prevnext" href="'.sprintf($link, $current_page-1).'" title="Page précédente">&laquo; Précédent</a>';
              else
                 $pagination .= '<span class="prevnext disabled">&laquo; Précédent</span>';
     
              // Lien(s) début
              for ( $i=1 ; $i<=$firstlast ; $i++ ) {
                 $pagination .= ' ';
                 $pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
              }
     
              // ... après pages début ?
              if ( ($current_page-$around) > $firstlast+1 )
                 $pagination .= ' &hellip;';
     
              // On boucle autour de la page courante
              $start = ($current_page-$around)>$firstlast ? $current_page-$around : $firstlast+1;
              $end = ($current_page+$around)<=($nb_pages-$firstlast) ? $current_page+$around : $nb_pages-$firstlast;
              for ( $i=$start ; $i<=$end ; $i++ ) {
                 $pagination .= ' ';
                 if ( $i==$current_page )
                    $pagination .= '<span class="current">'.$i.'</span>';
                 else
                    $pagination .= '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
              }
     
              // ... avant page nb_pages ?
              if ( ($current_page+$around) < $nb_pages-$firstlast )
                 $pagination .= ' &hellip;';
     
              // Lien(s) fin
              $start = $nb_pages-$firstlast+1;
              if( $start <= $firstlast ) $start = $firstlast+1;
              for ( $i=$start ; $i<=$nb_pages ; $i++ ) {
                 $pagination .= ' ';
                 $pagination .= ($current_page==$i) ? '<span class="current">'.$i.'</span>' : '<a href="'.sprintf($link, $i).'">'.$i.'</a>';
              }
     
              // Lien suivant
              if ( $current_page < $nb_pages )
                 $pagination .= ' <a class="prevnext" href="'.sprintf($link, ($current_page+1)).'" title="Page suivante">Suivant &raquo;</a>';
              else
                 $pagination .= ' <span class="prevnext disabled">Suivant &raquo;</span>';
           }
           return $pagination;
        }
    A cette fonction, je dois insérer des variables en plus du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        if($id_de_la_sous_categorie==1){
        $variable_pagination = '&amp;key='.$_GET['key'].'&amp;cp='.$_GET['cp'].'&amptrie='.$_GET['trie'].'';
        }
        else if($id_de_la_sous_categorie==2){
        $variable_pagination = '&amp;key='.$_GET['key'].'&amp;cp='.$_GET['cp'].'&amp;trie='.$_GET['trie'].'';
        }
        else{
        $variable_pagination = '&amp;key='.$_GET['key'].'&amp;cp='.$_GET['cp'].'&amp;prix='.$_GET['prix'].'&amp;trie='.$_GET['trie'].'';
        }
    Théoriquement, l'intervention se situe dans la fonction au niveau de $link='?page=%d' mais quelque soit les testes que j'effectue, je ni parvient pas .. pas assez doué quoi!

    Un coup de pouce serait bienvenue.

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourrais-tu nous décrire le problème rencontré ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    $variable_pagination = '&amp;key='.$_GET['key'].'&amp;cp='.$_GET['cp'].'&amptrie='.$_GET['trie'].'';
    Pourquoi "&amp;" mais pas "&"

    A+.

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut
    Bonjour,

    Le soucis principal est que je ne sais pas très bien ou et comment intégrer $variable_pagination dans la fonction puisque visiblement c'est qui permet de "construire" l'url .

    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link='?page=%d'.$variable_pagination.''
    j'ai une erreur.
    Si j'intègre mes variables $variable_pagination directement dans la fonction (ou même en dehors) et que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $link .= '%d';
    $link .= '$variable_pagination';
    ..ma variable $id_de_la_sous_categorie n'est pas pris en considération et c'est systématiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        else{
        $variable_pagination = '&amp;key='.$_GET['key'].'&amp;cp='.$_GET['cp'].'&amp;prix='.$_GET['prix'].'&amp;trie='.$_GET['trie'].'';
        }
    qui m'est retourné. Idem si j'ajoute $variable_pagination à toutes les url de la fonction.
    Bref, je sèche complètement .

    @andry.aime : parce que le W3C "râle" si je met des & au lieu des &amp; .. ce n'est pas valide.

    Edit : au cas ou je me serais mal exprimé..
    Le but :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function pagination($current_page, $nb_pages, $link='?page=%d&toto=1&titi=1', $around=3, $firstlast=1)
    La fonction me retourne une url du style : page=1&toto=1&titi=1
    Je veux effectuer la même opération mais en utilisant $variable_pagination à la place de &toto=1&titi=1 dans la fonction.

    Merci

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Je ne comprend toujours pas ton soucis mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link .= '$variable_pagination';
    Les variables dans des simples quotes ne sont pas interprétées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link .= $variable_pagination;
    A+.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,


    Pourquoi "&amp;" mais pas "&"

    A+.
    parce que & c'est le caractère clé pour une entité HTML,

    Error : character "&" is the first character of a delimiter but occurred as data

    <p>&</p>

    This message may appear in several cases:

    * You tried to include the "<" character in your page: you should escape it as "&lt;"
    * You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&amp;", which is always safe.
    * Another possibility is that you forgot to close quotes in a previous tag.


    Error : xmlParseEntityRef: no name

    <p>&</p>

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    parce que & c'est le caractère clé pour une entité HTML,
    je ne pense pas que même a l'intérieur d'une page HTML, une URL s'écrive en HTML.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par sabotage Voir le message
    je ne pense pas que même a l'intérieur d'une page HTML, une URL s'écrive en HTML.
    ton URL s'écrit en HTML dans une page HTML, c'est simple test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="?blabla=machin&amp;truc=bidule">test</a>

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut
    @andry.aime : je décris si mal que ça mon soucis ?

    Ceci dit, je l'ai résolut

    Merci quand même de vos réponses.

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

Discussions similaires

  1. [MySQL] Soucis de pagination en php
    Par xRayane dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/04/2013, 02h58
  2. Soucis de pagination
    Par fredxd dans le forum CodeIgniter
    Réponses: 1
    Dernier message: 27/07/2011, 23h40
  3. Pagination PHP Soucis
    Par TRUNCKS dans le forum Langage
    Réponses: 4
    Dernier message: 26/01/2011, 17h53
  4. [PHP 5.0] souci de pagination lors du clique sur les liens des pages
    Par unix27 dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2010, 12h33
  5. [MySQL] Petit soucis de pagination
    Par cyrill.gremaud dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 08/05/2006, 09h50

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