Page 1 sur 1
count et limit sur une requete
Posté : 07 août 2008, 12:11
par Invité
bonjour a tous
une question rapide :
peut on cohabiter un count ( pour retourner le total de ligne ) et une clause limit pour la pagination dans une seul requete ?
merci par avance pour toute aide !

Posté : 07 août 2008, 13:03
par Invité
SQL_CALC_FOUND_ROWS et FOUND_ROWS()
mm ok par contre ca n' a pas l' air d'etre tres fiable

Posté : 07 août 2008, 13:31
par albat
Un SELECT count(*) renvoie une unique valeur : le résultat
Je ne comprends pas le besoin de paginer...

Posté : 07 août 2008, 13:44
par katagoto
oui, on peut faire cohabiter les deux sans problèmes, ils sont indépendant l'un de l'autre, contrairement à WHERE.
albat, ça permet de ne pas envoyer toute les informations du résultat en même temps, immagine : l'utilisateur cherche dans la première tranche, si son résultat n'est pas là, hop il va sur la suivante et ainsi de suite, si on revois 10.000 résultat sur une page et que l'utilisateur trouve sa page au 15ème résultat, 9985 résultats auraient été viant alors que seulement 5 résultats auraient été inutile, deplus, ça augmente la charge et le temps d'affichage de la page...
Posté : 07 août 2008, 14:09
par zeus
katagoto, un SELECT COUNT(*) sans GROUP BY ne renvoi qu'une seule ligne ...
Par contre, le besoin de paginer avec un COUNT prend son sens avec le GROUP BY ...
Posté : 07 août 2008, 14:33
par Invité
bon ok ca a l air de passer meme si il y a quelques pb de perf sur des grosses tables ...
ca peut toujours servir:
$limitePage = 10;
if(isset($_GET['NoPage']) AND !empty($_GET['NoPage']) AND is_int($_GET['NoPage']))
{
$lh = (int)$_GET['NoPage']*$limitePage;
$limitSql = $lh.','.$limitePage;
}
else
{
$limitSql = $limitePage;
}
$q = 'select SQL_CALC_FOUND_ROWS(Id),Id,Nom,Libelle from table LIMIT '.$limitSql;
$result = mysql_query($q);
$q = 'select FOUND_ROWS()';
$r = mysql_query($q);
$d = mysql_fetch_row($r);
while {....
Posté : 07 août 2008, 15:43
par zeus
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération toi-même
en cliquant sur le bouton
qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).
Alors... inscris-toi !!! 