begin process at 2012 02 13 18:18:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Pagination d'une requête 109 ligne sur pages de 20 lignes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pagination d'une requête 109 ligne sur pages de 20 lignes

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ée 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 recherche+pagination [ par squago ] Bonjour à tous, C'est un homme au bord de la crise de nerfs qui vous écrit. Je cherche à adapter un code de recherche et pagination que j'ai récupéré probleme pagination avec plusieur requet sql [ par dpk1 ] bonjour à tous, je suis débutant autodidacte et je fais mon premier site en php. voila j'ai une pagination que j"ai repris qui fonctionne très bien l Problème affichage de résultats sur plusieurs pages [ par Audreypf ] Bonjour à tous, j'ai cherché une solution sur le net mais je ne trouve pas la solution. Voici mon problème. D'abord, je précise que je suis débutante Formulaire sur plusieurs pages [ par VEIIZ0N ] Bonsoir a tous ! Je suis débutant en php , enfin j'ai quand même reussi a créé mon site en cherchant sur internet etc mais je ne réussi pas ou plutô système de pagination en PHP4 [ par fijou12 ] bonjour à tous j'ai un problème, en ce qui concerne le système de pagination, je n'arrive pas a comprendre comment créer les pages(pour afficher les m creer un bloc fixe dans toute les pages [ par itachi2255 ] bonjour, je suis debutant et je voulais creer un petit site internet dans lequel ya plusieurs page. et je voudrais que la partie supperieure qui conti page 404, 500 etc... [ par eva4 ] bonjour, Pour finalisé mon site j'ai crée des pages d'erreurs. une page que j'ai appelé 404.php, 500.php, 503.php etc.... voici le contenu de mon fi Je n'arrive pas à récupérer une variable d'une page à l'autre [ par boubeuch1 ] Bonjour, Sur l'une de mes pages php j'ai mis un input qui affiche le nom de la musique que je viens de télécharger. Musique : " > Sur la seconde pa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales