Pagination php

Résolu/Fermé
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014 - 28 janv. 2013 à 15:44
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014 - 29 janv. 2013 à 19:43
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 :

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:

8 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
29 janv. 2013 à 18:46
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);
1
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
29 janv. 2013 à 19:43
Effectivement c'est ça ! Merci beaucoup de votre aide. Bonne soirée
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
28 janv. 2013 à 15:47
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.
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
28 janv. 2013 à 16:14
Mon count n'est pas bon ? :o
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
28 janv. 2013 à 16:16
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.
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
28 janv. 2013 à 16:17
D'accord ^^ Merci :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
28 janv. 2013 à 16:26
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 ?
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
Modifié par tgos93 le 28/01/2013 à 16:53
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
}
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
28 janv. 2013 à 16:51
suivant* pour le premier dsl
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
Modifié par ThEBiShOp le 28/01/2013 à 17:25
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
}
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
28 janv. 2013 à 19:12
J'y regarde demain, je ne connaissais pas "floor".
Merci de m'accorder du temps ;)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
28 janv. 2013 à 22:00
c'est une fonction mathématique floor($nb) donne l'entier inférieur et ceil($nb) l'entier supérieur
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
29 janv. 2013 à 15:52
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

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();
0
tgos93 Messages postés 83 Date d'inscription vendredi 28 décembre 2012 Statut Membre Dernière intervention 9 juillet 2014
29 janv. 2013 à 15:54
PS : A noter que j'ai mis : $nb_page = floor($requete2/10); car $donnee2 étant de type tableau je m'etais trompé.
0