Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Pagination d'une requête 109 ligne sur pages de 20 lignes [ Base de données / MySQL ] (ragmo)

jeudi 16 octobre 2008 à 11:42:54 | Pagination d'une requête 109 ligne sur pages de 20 lignes

ragmo

Bonjour,

Je voulais savoir comment on pouvait gérer la pagination des nombres de lignes ramenées par une requête (Base MySQL) pour n'afficher que 20 lignes par page (en PHP), et qu'en bas de la page on a l'accès aux autres pages 1, 2, 3, 4, 5, ..  >> (si l'on est sur la première page).

Je sais que que le nombre de mes pages est le rapport (Nbr lignes résaltant de la requête / 20) +1 si le reste est différent 0. Mais problème se situe dans l'appel de la page appelée, comment faire en sorte que les données des lignes 21 à 40 s'affichent quand j'appelle la page 2.

Cordialement.

jeudi 16 octobre 2008 à 12:04:16 | Re : Pagination d'une requête 109 ligne sur pages de 20 lignes

neigedhiver

Salut,

La lecture de la doc pourrait s'avérer utile, avant de poser ce genre de question.

http://dev.mysql.com/doc/refman/5.0/fr/select.html

  • La clause LIMIT peut être utilisée pour limiter le nombre d'enregistrements retournés par la commande SELECT. LIMIT accepte un ou deux arguments numériques. Ces arguments doivent être des entiers constants.

    Avec un argument, la valeur spécifie le nombre de lignes à retourner depuis le début du jeu de résultat. Si deux arguments sont donnés, le premier indique le décalage du premier enregistrement à retourner, le second donne le nombre maximum d'enregistrement à retourner. Le décalage du premier enregistrement est 0 (pas 1) :

    Pour être compatible avec PostgreSQL, MySQL supporte aussi la syntaxe : LIMIT row_count OFFSET offset.

    mysql> SELECT * FROM table LIMIT 5,10;  # Retourne les enregistrements 6 à 15

    Pour obtenir tous les enregistrement d'un certain décalage jusqu'à la fin du résultat, vous pouvez utiliser de grands entier en tant que second paramètre :

    mysql> SELECT * FROM table LIMIT 95,18446744073709551615; # Retourne les enregistrements de 96 jusqu'au dernier.

    Si un seul argument est donné, il indique le nombre maximum d'enregistrements à retourner :

    mysql> SELECT * FROM table LIMIT 5;     # Retourne les 5 premiers enregistrements

    Autrement dit, LIMIT n est équivalent à LIMIT 0,n.




Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...

jeudi 16 octobre 2008 à 12:36:29 | Re : Pagination d'une requête 109 ligne sur pages de 20 lignes

ragmo

Merci Neige,

Donc, si j'ai bien compris, à chaque fois que je dois afficher une page je relance une nouvelle requête ? Cela me paraîtrait un peu lourd.
Donc au total, j'aurai ma première requête pour compter le nombre de lignes concernées, puis je fais une deuxième requête pour ramener la première page les lignes de 1 à 20 si cette page est demandée, ensuite quand je clique sur le lien pointant sur la page 2 je relance ma requête encore une nouvelle pour ramener les lignes de 21 à 40, et ainsi de suite jusqu'à la limite de mes nombre de lignes ??

Cela peut marcher, mais je me demande s'il n'y a pas un moyen me permettant d'économiser les entrée/sortie à la base tel que le rafraîchissment des données préalablement stockées dans un tableau par exemple.

Cordialement

jeudi 16 octobre 2008 à 13:05:55 | Re : Pagination d'une requête 109 ligne sur pages de 20 lignes

neigedhiver

Si, c'est possible, il faudrait pour cela mettre le résultat de la requête en cache. La GRANDE question est : comment le mettre en cache... Et c'est là qu'on se rend compte que finalement, refaire la requête, c'est pas plus lourd que de mettre en cache, lire, parcourir jusqu'au premier enregistrement à prendre...

Si la table est correctement indexée, ça ne posera pas de problème particulier...


Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...

jeudi 16 octobre 2008 à 17:22:33 | Re : Pagination d'une requête 109 ligne sur pages de 20 lignes

Ordinastie

Bonjour,

Tu n'es pas obligé d'éxécuter plusieurs fois ta requête.
Regarde du coté de la fonction FOUND_ROWS() ( [ Lien ])

Ordinastie.


mercredi 19 novembre 2008 à 18:14:23 | Re : Pagination d'une requête 109 ligne sur pages de 20 lignes

ragmo

Je te remercie Ordinastie de ton apport technique avancé, je remercie Neige aussi. J'ai maintenant assez de billes pour avancer dans ma problématique.
De mon côté j'ai pu trouver ces deux liens intéressants
[ Lien ]
et
[ Lien ]

Cordialement.




Cette discussion est classé dans : page, pages, lignes, requête, pagination


Répondre à ce message

Sujets en rapport avec ce message

Page multiples dans résultats MySQL [ par pyranhaz ] Bonjour,Existe-il une astuce simple pour que lorsque je fais une requête MySQL sur mon site on m'affiche les pages contenant au maximum 25 résultats p Pagination avec nombre de pages [ par sebalex ] Salut à tous,Voilà, j'ai une liste résultant d'une recherche. Cette liste se limite à 5 résultats par page. A présent, je souhaite faire comme la plup affichage requête SQL dans pseudo frame php [ par titsuisse ] Bonjour, J'ai une petite question. J'ai construit mon site en le divisant comme un tableau. Au centre de ce tableau se trouve une page avec un includ Impression page avec entete sur chaque page [ par stpa ] Bonjour,J'ai une page php formatée pour etre impriméé avec une entete (table html + image + donnees sql). Cette entete s'imprime bien en début de page Grouper les images par 25 dans une galerie [ par Evangun ] Bonsoir à tous ! Il y a bcp de scripts parfaits pour faire des galeries d'images mais à chaque fois ils sont trop compliqués et je n'arrive pas à comp Affichage d'une requête sur plusieurs pages [ par greg62300 ] Salut, Voici ce que je souhaite faire : J'ai un formulaire composé de 3 listes déroulante : Le but étant de faire grâce à ce formulaire une requete pe PB lien sur pages apres requete SQl!!! [ par LaTatadu91 ] salut,voila j'ai un script qui récupére l'ensemble d'une base de donnée et je cherche a l'afficher dans un tableau avec une limite par page et je cré Visiteurs pouvant modifier les pages [ par jlm58 ] je souhaite que certains visiteurs de mon site puissent modifier ou ajouter du texte sur une page que j'ai préparée soit en tapant directement le text Actualisation d'une page et empeche l'execution d'une requête [ par Mickko ] j'aurai voulu savoir comment empecher lors du raffraichissment d'une page l'insertion dans la base de données. En effet, je remplie un formulaire et


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 5,788 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.