blog actif depuis 774 jours.

retours d'expériences, codes sources, réflexions, humeurs... d'un webmaster

 

Lun.

08

Juin

 
Quand vous affichez une liste très grande de résultats, il est préférable de paginer, c'est à dire de découper cette liste sur plusieurs pages.
Voici une astuce pour récupérer le nombre total de résultats d'une requête, nécessaire ici pour savoir combien de pages afficher.

Prenons par exemple, la requête
SELECT * FROM ma_table;
qui retourne 150 résultats.
On décide d'afficher ces résultats sur 5 pages de 30 résultats. On va donc optimiser la requête pour ne sélectionner que les résultats correspondant à la page à afficher :
par exemple, pour la première page :
SELECT * FROM ma_table LIMIT 30;
Le souci est que le nombre de résultats retourné est non plus 150 mais 30. On pourrait refaire un
SELECT COUNT(*) FROM ma_table;
mais cette solution force à ré-exécuter une requête et n'est pas très élégante.

Il existe une méthode simple pour récupérer le nombre total de résultats : on ajoute SQL_CALC_FOUND_ROWS au SELECT :
SELECT SQL_CALC_FOUND_ROWS * FROM ma_table LIMIT 30;
Cette requete retourne bien les 30 premiers résultats.
On récupère ensuite le nombre de résultats total avec:
SELECT FOUND_ROWS();

Bookmark and Share

 

Commentaires

Merci pour cette info très utile pour la pagination de nos pages, un grand merci.

09/07/2009

 

Ajouter un commentaire

nom / pseudo :
e-mail :

(Votre e-mail ne sera ni exploité, ni divulgué.)

site (facultatif)
 

Webmaster depuis maintenant plus de 10 ans, j'ai créé ce blog pour publier mes retours d'expérience et parler du Web et du développement Web en général, mais aussi de plein d'autres choses...

romualb.com est sur Facebook
<Juillet 2010 
LunMarMerJeuVenSamDim
   01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

 

 

Referencement annuaire gratuit Annuaire carte postale blog,,personnel communiquer gratuit Paperblog : Les meilleurs actualités issues des blogs Classement de sites - Inscrivez le vôtre! Inscrivez-vous maintenant sur Viadeo Web Developement Blogs - BlogCatalog Blog Directory web counter