Pagination php
Résolu
tgos93
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
tgos93 Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
tgos93 Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai effectué un système de pagination avec 10 articles par page ... Cependant je n'arrive pas à faire en sorte de ne plus afficher le "Suivant" Si le nombre d'articles est supérieur à la page correspondante. Pour la première page le "Précédent" à disparu, mais pour le "Suivant" rien à faire ...
Je m'explique :
Comme la première page = 0 (récupéré dans l'url), si le nombre d'article (requête count) > (((page+1)*10)+1) soit pour la page 0 : 11, pour la page 1 : 21
Or j'ai 21 articles et sur la page 2 il m'affiche Précédent et Suivant
Merci de votre aide!
Voici le code :
J'ai effectué un système de pagination avec 10 articles par page ... Cependant je n'arrive pas à faire en sorte de ne plus afficher le "Suivant" Si le nombre d'articles est supérieur à la page correspondante. Pour la première page le "Précédent" à disparu, mais pour le "Suivant" rien à faire ...
Je m'explique :
Comme la première page = 0 (récupéré dans l'url), si le nombre d'article (requête count) > (((page+1)*10)+1) soit pour la page 0 : 11, pour la page 1 : 21
Or j'ai 21 articles et sur la page 2 il m'affiche Précédent et Suivant
Merci de votre aide!
Voici le code :
if(isset($_GET['page']) && $_GET['page']>=0) { $page=$_GET['page']; } else { $page=0; } $precedente=$page-1; $suivante=$page+1; mysql_connect($hôte, $utilisateur, $mPasse); mysql_select_db($nomBase); $sql2="select count(id)from article"; $requete2=mysql_query($sql2) or die ('Erreur sql !'); $donnee2=mysql_fetch_array($requete2); if($donnee2>=((($page+1)*10))+1) /*dernière page*/ { if($page<=0) /*première page*/ { echo"<a href=\"blog.php?page=$suivante\"><center><font color=\"white\">Suivante >></font></center></a>"; } else { echo"<a href=\"blog.php?page=$precedente\"><center><font color=\"white\"><< Précédente</a></font></center> ... <a href=\"blog.php?page=$suivante\"><center><font color=\"white\">Suivante >></font></center></a>"; } } else { if($page<=0) { echo""; } else { echo "<a href=\"blog.php?page=$precedente\"><center><font color=\"white\"><< Précédente</a></font></center>"; } } mysql_close();
A voir également:
- Pagination php
- Pagination powerpoint - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Sommaire avec pagination - Guide
- Pagination google doc a partir de la page 3 ✓ - Forum Bureautique
8 réponses
Il faut contrôler ce qu'il y a dans les variables, via des echo ou des var_dump, histoire de cibler ou se situe le problème.
A chaque fois qu'on met une valeur dans une valeur qui peut poser soucis, on l'affiche histoire d'être certain de savoir ce qui se passe et à quel moment.
Là je pense qu'il faudrait faire
$nb_page = floor($donnee2[0]/10);
A chaque fois qu'on met une valeur dans une valeur qui peut poser soucis, on l'affiche histoire d'être certain de savoir ce qui se passe et à quel moment.
Là je pense qu'il faudrait faire
$nb_page = floor($donnee2[0]/10);
tgos93
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
Effectivement c'est ça ! Merci beaucoup de votre aide. Bonne soirée
Commence par faire un count pour savoir combien d'articles tu auras, comme ça avec un petit calcul tu sais combien de pages tu auras, et tu n'affiches plus le "suivant" sur la dernière.
Pour être honnête j'ai lu ton explication et je n'ai pas regardé le code, pensant que tu n'avais juste pas fait ce que j'ai mentionné.
Je regarde ton code et j'édite.
Je regarde ton code et j'édite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je n'aurais pas fait comme toi.
Tu as 21 éléments, tu devrais avoir 3 pages si tu as 10 éléments par page, non ?
1 -> 10
11 -> 20
20 -> 21
après mon count j'aurais calculé le nombre de page que je vais avoir, à savoir 3, et ensuite tu affiches le précédent si tu n'es pas dans la page 0, puis tu affiches "suivant" si $page<$nbpages
un truc du genre...
tu me suis ?
Tu as 21 éléments, tu devrais avoir 3 pages si tu as 10 éléments par page, non ?
1 -> 10
11 -> 20
20 -> 21
après mon count j'aurais calculé le nombre de page que je vais avoir, à savoir 3, et ensuite tu affiches le précédent si tu n'es pas dans la page 0, puis tu affiches "suivant" si $page<$nbpages
un truc du genre...
tu me suis ?
Je devrais avoir 3 pages en effet mais d'indice 0, 1 et 2 voila pourquoi j'ai dis 2 (la valeur de la page dans l'url) ^^
Si je suis votre raisonnement cela donnerai (après le count) le nombre de pages total serait égal au résultat du count divisé par 10, Comme ceci ? :
$nb_page = $donnee2 / 10;
if ($page==0)
{
précédent (pour faire simple)
}
else if ($page<$nb_page)
{
précédent et suivant
}
else if ($page == $nb_page)
{
précédent
}
Si je suis votre raisonnement cela donnerai (après le count) le nombre de pages total serait égal au résultat du count divisé par 10, Comme ceci ? :
$nb_page = $donnee2 / 10;
if ($page==0)
{
précédent (pour faire simple)
}
else if ($page<$nb_page)
{
précédent et suivant
}
else if ($page == $nb_page)
{
précédent
}
il faut la valeur supérieure pour avoir le nombre de pages
$nb_page = ceil($donnee2/10);
edit : (oups, avec ta logique, c'est pas un ceil, mais un floor)
et si tu fais ça, ça devrait suffire :
if ($page==0)
{
précédent (pour faire simple)
}
if ($page<$nb_page)
{
suivant
}
$nb_page = ceil($donnee2/10);
edit : (oups, avec ta logique, c'est pas un ceil, mais un floor)
et si tu fais ça, ça devrait suffire :
if ($page==0)
{
précédent (pour faire simple)
}
if ($page<$nb_page)
{
suivant
}
Bonjour, j'ai essayé votre méthode et cela fonctionne sauf que, le nombre de page compté est 1 alors que je devrais avoir 2 (0,1,2) car j'ai 21 articles ... je ne comprends pas :/
J'ai fais un echo, celui ci m'affiche :
-Pour la page 0 : "page : 0 nb page : 1" + suivante
-pour la page 1 : "page : 1 nb page : 1" + précédente
-(pas accès à la page 2 de ce fait)
MERCI. Voila le code
J'ai fais un echo, celui ci m'affiche :
-Pour la page 0 : "page : 0 nb page : 1" + suivante
-pour la page 1 : "page : 1 nb page : 1" + précédente
-(pas accès à la page 2 de ce fait)
MERCI. Voila le code
if(isset($_GET['page']) && $_GET['page']>=0) { $page=$_GET['page']; $article=$page*10; } else { $article=0; $page=0; } $precedente=$page-1; $suivante=$page+1; mysql_connect($hôte, $utilisateur, $mPasse); mysql_select_db($nomBase); $sql2="select count(id)from article"; $requete2=mysql_query($sql2) or die ('Erreur sql !'); $donnee2=mysql_fetch_array($requete2); $nb_page = floor($requete2/10); echo "page : $page </br> nb page : $nb_page"; if ($page==0) { echo"<a href=\"blog.php?page=$suivante\"><center><font color=\"white\">Suivante >></font></center></a>"; } else if ($page<$nb_page) { echo"<a href=\"blog.php?page=$precedente\"><center><font color=\"white\"><< Précédente</a></font></center> ... <a href=\"blog.php?page=$suivante\"><center><font color=\"white\">Suivante >></font></center></a>"; } else if ($page == $nb_page) { echo "<a href=\"blog.php?page=$precedente\"><center><font color=\"white\"><< Précédente</a></font></center>"; } mysql_close();