Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour
Quand je veux limiter le nombre d'enregistrements dans ma requete sql, je dois utiliser ->limit($a,$b) ou ->pageLimit($a,$b) ?
exemple, je veux les enregistrement de 1 à 50
je fais
->limit(1,50)
ou pageLimit(1,50)
je saisi pas bien la différence...
merci d'avance de votre réponse
Hors ligne
Bonjour,
Les 2 servent à la même chose, mais ne s'utilise pas de la même façon. En réalité, ->pageLimit() et une aide et s'utilisera essentiellement lors de pagination des résultats.
->limit($a,$b) créer une clause "limit" dans la requête sql telle que définie par ton adaptateur db (où $a correspond à l'ofset du début des résultats, et $b au nombre de résultats voulu)
->pageLimit($a,$b) créer une clause "limit" aussi mais la clause sera calculée en fonction des paramètres où $a est le numéro de page actuel, et $b le nombre de résultat par page voulu.
En d'autres termes, par rapport à ton exemple, pour la récupération des 1ers résultats, les paramètres sont identiques, mais pour les résultats 51 à 100, tu auras plutôt :
->limit(51,50); ->pageLimit(2,50)
Dernière modification par NewSky (23-10-2008 11:47:59)
Hors ligne
Salut,
Les fonctions limit() et limitPage() n'ont pas la même utilité.
Si on prend comme exemple la requête MySQL suivante :
SELECT t.* FROM toto AS t WHERE t.isactive=1 LIMIT 20,30
La fonction limit() va se comporter exactement comme le "LIMIT Mysql", c'est à dire qu'il va récupérer une intervalle de résultats entre deux indices. Ici la requête ne va retourner que les résultats entre la 20eme et la 30eme ligne.
Ce qui donne :
$select = $db->select() ->from(array('t' => 'toto')) ->limit(20, 30);
La fonction limitPage() permet de gérer des "portions" ou des "pages". C'est à dire que tu dois lui indiquer combien de résultats par "page" tu as et quelle page la requête doit sélectionner.
Pour notre exemple on aurait la requête suivante:
$select = $db->select() ->from(array('t' => 'toto')) ->limitPage(3, 10);
Pour plus de détails :
http://framework.zend.com/manual/fr/zen … ding.limit
A+ benjamin.
Edit : Réponse entre temps, mais ça t'en feras une de plus :p
Dernière modification par Delprog (23-10-2008 11:55:20)
Hors ligne
dans mon cas, j'ai une requete sql et je dois afficher par exemple 30 enregistrement par page
je passe en argument à ma requete sql, $page (numero de page) et $nbre (nbre d'enregistrement par page)
donc quand je fais
->pageLimit(1, 30)
il va m'afficher la permiere page avec 30 enregistrements
puis si je fait ->pageLimit(2, 30)
il va m'afficher les 30 enregistrements suivants?
peux-tu m'éclairer là-dessus?
merci
Hors ligne
donc quand je fais
->pageLimit(1, 30)
il va m'afficher la permiere page avec 30 enregistrements
puis si je fait ->pageLimit(2, 30)
il va m'afficher les 30 enregistrements suivants?
Exactement.
Attention la syntaxe est limitPage().
La fonction est à utiliser en concordance avec ta pagination. C'est bien pratique
A+ benjamin.
Hors ligne