JeuWeb - Crée ton jeu par navigateur
faire une pagination? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : faire une pagination? (/showthread.php?tid=7004)



faire une pagination? - hercull - 18-08-2013

Bonjour je désire afficher les informations contenu dans ma bdd (exemple la liste de tous les articles) grâce à une boucle while, jusqu'ici pas de problème, seulement lorsque je fais ma requête je met SELECT * et donc cela me retourne tous les les articles.
Pour l'instant pas de problème tant qu'il n'y en a pas beaucoup mais disons que j'ai ai 1000 comment faire pour n'en afficher que 10 dans ma page (sa à la limite je peux imposer un maximum de réponses en modifiant ma requête) et, qu'en dessous du 10eme article se créer une pagination (j’espère que c'est bien le bon terme) c'est a dire : page 1,2,34,5,..., et que je puisse cliquer sur les chiffres des pages, qui me retourneront les 10 articles suivants...et ainsi de suite
Merci de votre aide j’espère avoir été assez clair.


RE: faire une pagination? - srm - 18-08-2013

http://php.about.com/od/mysqlcommands/g/Limit_sql.htm


RE: faire une pagination? - Xenos - 18-08-2013

Variante (tout dépend si la pagination sert à limiter l'affiché ou à limiter la quantité de données transférer):
► Ne pas limiter la requête SQL
► Envoyer toutes les données dans la page, formatée dans un tableau par exemple, ou dans une suite de tableaux
► Masquer les tableaux qu'on ne veut pas afficher (via CSS, display=none par exemple).
Mais c'est une limitation d'affichage, pas de transfert. Donc, dans le cas du "1000 commentaires", cela me semble inadapté, mais dans le cas, par exemple de 100 titres d'articles, c'est envisageable.

On peut croiser les deux: Envoyer 100 titres d'articles, pas plus (limite SQL), et n'afficher que les 10 premiers.
Cela permet de donner un aspect hyper-réactif aux pages: quand on demande les 10 titres suivants, comme on ne fait pas de requête (type AJAX), l'affichage est immédiat. Mais cela n'apporte rien en terme d'optimisation dans le transfert des données ou dans le poids de la page! Cela allège juste la vue de l'utilisateur.


RE: faire une pagination? - hercull - 19-08-2013

ok merci beaucoup.


RE: faire une pagination? - srm - 19-08-2013

Xenos, manifestement hercull est un grand débutant, dans ce cas il faut mieux éviter de donner des conseils trop pointus qu'il risque de mal appliquer.

En résumé : non hercull tu DOIS utiliser limit mysql.


RE: faire une pagination? - Xenos - 19-08-2013

Pas faux.
Suis la voix d'Oxman; et ainsi, avance Hercull ! ( \o/ )


RE: faire une pagination? - KyleK - 19-08-2013

La bonne méthode, c'est d'utiliser LIMIT et SQL_CALC_FOUND_ROWS et FOUND_ROWS() : http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
Ainsi tu as en une seule requête qui ne récupère que les données de la page courante et tu fais un FOUND_ROWS() pour obtenir le nombre de résultats qu'il y aurait eu sans le LIMIT.
Bonne continuation.