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 12/09/2007, 15h17   #1
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Par défaut Limiter le nombre de pages de résultats

Bonjour à tous,

Le code suivant me permet d'afficher les résultats d'une requête. Il y a 10 résultats par page mais avec le nombre grandissant de résultats je me retrouve avec plus de 400 numéros de page qui s'affichent après les résultats. C'est pas très joli et j'aimerais modifier mon code pour avoir juste 10 numéros de page. Si l'utilisateur clique sur le numéro 2 ça ajoute une page et s'il clique sur la page 5 ca ajoute 5 pages. Mais il y a toujours 10 numéros qui s'affichent pas plus. Vous voyez ou je veux en venir.

Voici le code dont je me sers :

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
 
if(!isset($_GET['page']))
{
$page = 1;
}
else 
{
$page = $_GET['page'];
}
 
$max_results = 10;
 
$from = (($page * $max_results) - $max_results); 
 
 
$sql = mysql_query("SELECT id_ad,titre, description FROM table1 LIMIT $from, $max_results");
 
 
 
Les résultats ICI
 
 
 
$total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM table1"),0);
 
$total_pages = ceil($total_results / $max_results);
 
echo "<center><p><strong>";
 
if($page > 1){
    $prev = ($page - 1);
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\">Précédente</a> ";
}
 
for($i = 1; $i <= $total_pages; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }
}
 
if($page < $total_pages){
    $next = ($page + 1);
    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Suivante</a>";
}
echo "</strong></p></center>";
Merci d'avance pour votre aide précieuse. Grace à vous j'apprends un peu plus tous les jours à développer.
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 15h56   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Essaie ceci pour voir :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$limit=10;
$start = $page-($limit / 2);
if ($start < 1) {$start = 1; $end=$limit;}
 
$end = $page+($limit / 2);
if ($end > $total_pages) {$end = $totalpages; $start = $totalpages - $limit;}
 
for($i = $start; $i <= $end; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }
@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 23h05   #3
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Citation:
Envoyé par cadoudal56 Voir le message
Essaie ceci pour voir :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$limit=10;
$start = $page-($limit / 2);
if ($start < 1) {$start = 1; $end=$limit;}
 
$end = $page+($limit / 2);
if ($end > $total_pages) {$end = $totalpages; $start = $totalpages - $limit;}
 
for($i = $start; $i <= $end; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }
@+
cadou

Merci beaucoup le code fonctionne pour les 1eres pages. Ensuite quand on arrive aux dernières pages une erreur se produit à la ligne

Code :
if ($end > $total_pages) {$end = $totalpages; $start = $totalpages - $limit;}
voici l'erreur Notice: Undefined variable: totalpages

L'erreur survient au moment ou le nombre de page qui reste est inférieur à la limite.

De plus est-ce possible de garder les liens "suivant" et "précédent" sans que ca demande trop de travail ?
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 23h15   #4
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
En fait le code est parfait c'etait une erreur de syntaxe totalpages et total_pages.

Par contre si c'est possible de garder les liens SUIVANT et PRECEDENT ca serait bien.

Comment je les intègre?

Merci d'avance
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 23h38   #5
Membre confirmé
 
Avatar de frol
 
Inscription : mars 2005
Messages : 288
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mars 2005
Messages : 288
Points : 268
Points : 268
Envoyer un message via AIM à frol Envoyer un message via MSN à frol Envoyer un message via Skype™ à frol
as tu au moins essayé par toi même?
Par exemple de les remettre en les copiant collant?
frol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 00h42   #6
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
oui j'ai essayé et ca mon probleme c'est que ca ajoutait un suivant et precedent à chaque numero de page
dolf13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 09h50   #7
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Les pages Suivant et Précédent ce n'est pas le plus compliqué....
Il faut les rajouter avant et après la boucle (pas dans la boucle...)

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
 
 
//Nombre de pages a afficher
$limit=10;
 
//Definition des pages suivant précedent
if (($page + 1) < $total_pages) {$next = $page + 1;}
if (($page - 1) > 0) {$last = $page - 1;}
 
//Definition du Start
$start = $page-($limit / 2);
if ($start < 1) {$start = 1; $end=$limit;}
 
//Dédinition du End 
$end = $page+($limit / 2);
if ($end > $total_pages) {$end = $total_pages; $start = $total_pages - $limit;}
 
//Affiche page précedente
if ($last) {echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$last\">Précédent</a> ";}
else {echo "<a href=\"#\">Précédent</a> ";}
 
//Boucle pour afficher les pages
for($i = $start; $i <= $end; $i++){
    if(($page) == $i){
        echo "$i ";
        } else {
            echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> ";
    }
 
//Affiche page suivante
if ($next) {echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Suivant</a> ";}
else {echo "<a href=\"#\">Suivant</a> ";}
Normalement Précédent devrait s'afficher avant la suite et Suivant après.
Si il n'y a pas de page suivante ou précédente, cela s'affiche quand meme, mais le lien est désactivé (histoire que tu gardes la structure de la mise en page.

Maintenant on peut agrémenter le script d'un première page et derniere page...

Pour la première page
Code :
1
2
3
4
5
6
7
8
 
 
// Affiche premiere page
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=1\">Premiere page</a> ";
 
//Affiche page précedente
if ($last) {echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$last\">Précédent</a> ";}
else {echo "<a href=\"#\">Précédent</a> ";}
Pour la dernière page
Code :
1
2
3
4
5
6
7
8
 
 
//Affiche page suivante
if ($next) {echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Suivant</a> ";}
else {echo "<a href=\"#\">Suivant</a> ";}
 
//Affiche dernière page
echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$total_pages\">Dernière page</a> ";
Et pour finir, tu peux aussi remplacer les pages suivantes et précédentes par des simples fleches et premiere et derniere page par des doubles fleches.

Maintenant, ce n'est pas le tout d'avoir la solution, il faut surtout bien la comprendre

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 09h50   #8
Membre confirmé
 
Avatar de frol
 
Inscription : mars 2005
Messages : 288
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : mars 2005
Messages : 288
Points : 268
Points : 268
Envoyer un message via AIM à frol Envoyer un message via MSN à frol Envoyer un message via Skype™ à frol
mais il faut le mettre hors de la boucle et tout ira bien
frol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 16h06   #9
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 175
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 175
Points : 30
Points : 30
Merci c'est parfait

j'ai juste ajouté = dans

Code :
if (($page - 1) >= 0) {$last = $page - 1;}
pour ne pas avoir d'erreur quand ils sont sur la page 1

et ca pour la dernière page

Code :
if (($page + 1) >= $total_pages) {$next = $page;}
Encore merci
dolf13 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 05h17.


 
 
 
 
Partenaires

Hébergement Web