Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2010, 21h10   #1
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 75
Points : 10
Points : 10
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 :
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 :
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
__________________
Petites annonces gratuites en France et Dom/Tom pour particuliers et professionnelles
tryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 22h28   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pourrais-tu nous décrire le problème rencontré ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 03h50   #3
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 127
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 127
Points : 7 271
Points : 7 271
Bonjour,

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

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 08h11   #4
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 75
Points : 10
Points : 10
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 :
$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 :
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 :
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 :
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
__________________
Petites annonces gratuites en France et Dom/Tom pour particuliers et professionnelles
tryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 17h51   #5
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 127
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 127
Points : 7 271
Points : 7 271
Je ne comprend toujours pas ton soucis mais
Code :
$link .= '$variable_pagination';
Les variables dans des simples quotes ne sont pas interprétées
Code :
$link .= $variable_pagination;
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h01   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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,

Citation:
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>
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h16   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h18   #8
Candidat au titre de Membre du Club
 
Inscription : septembre 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 75
Points : 10
Points : 10
@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.
__________________
Petites annonces gratuites en France et Dom/Tom pour particuliers et professionnelles
tryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 18h25   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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 :
<a href="?blabla=machin&amp;truc=bidule">test</a>
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h32.


 
 
 
 
Partenaires

Hébergement Web