Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai un formulaire permettant de saisir des critères de recherche.
Ces critères sont ensuite postés au contrôleur qui prépare la requête en fonction de ces critères.
Les données sont ensuite affichées dans la vue.
J'essaie de mettre ne place un système de pagination pour afficher ces données.
Je me suis inspiré de ce tuto : http://antoine-herault.developpez.com/t … ue-en-php/
Donc, j'utilise un LIMIT, et je crée des lien en bas de page qui me permettent de rappeller le controller avec un argument en plus "page" qui me permet de faire un LIMIT dans ma requête.
Le problème c'est qu'entre temps j'ai perdu les critères de recherche saisis dans mon premier formulaire.
Je ne vois pas trop comment récupérer ces infos :
- les donner à la vue qui les redonne au controller ?
- les stocker des le début en session ?
Dernière modification par bertra (23-05-2008 17:03:18)
Hors ligne
utilise la session pour les garder sous le coude
A+JYT
Hors ligne
oui, merci pour la réponse, je pense également que c'est la meilleure solution.
Hors ligne
Mais dans ce cas, ca veut dire que la recherche est de nouveau lancée lorsque tu veux aller sur la deuxième page !? Il n'y a pas une autre solution?
Hors ligne
slaughter a écrit:
Mais dans ce cas, ca veut dire que la recherche est de nouveau lancée lorsque tu veux aller sur la deuxième page !? Il n'y a pas une autre solution?
je ne sais , ça se passe comme ça sur le tuto que j'ai cité.
Je ne connais pas bien les LIMIT, peut être que je peux réutiliser le statement ?
Dernière modification par bertra (23-05-2008 21:45:22)
Hors ligne
Je dit peut être une connerie mais ne serait-il pas plus judicieux de stocker la liste des ID de ton résultat (je ne sais pas trop comment se présente le résultat de la recherche) plutôt que les paramètres de la recherche?
Hors ligne
slaughter a écrit:
Je dit peut être une connerie mais ne serait-il pas plus judicieux de stocker la liste des ID de ton résultat (je ne sais pas trop comment se présente le résultat de la recherche) plutôt que les paramètres de la recherche?
oui, c'est une idée, mais ça remet en question l'utilisation du LIMIT, non ?
Hors ligne
A oui c'est pas faux.
Dans le principe.
Tu fais la recherche.
Tu récupère toutes les réponses (donc plus de LIMIT)
Tu mets en session.
Et c'est au moment de l'affichage que tu choisis les réponses à afficher selon la page sur laquelle tu te trouves et selon le nombre de résultat par page.
Enfin c'est une idée. Je n'ai jamais essayé cette solution mais je compte également faire un moteur de recherche. Je me pose donc les même questions que toi.
Hors ligne
slaughter a écrit:
A oui c'est pas faux.
Dans le principe.
Tu fais la recherche.
Tu récupère toutes les réponses (donc plus de LIMIT)
Tu mets en session.
Et c'est au moment de l'affichage que tu choisis les réponses à afficher selon la page sur laquelle tu te trouves et selon le nombre de résultat par page.
Enfin c'est une idée. Je n'ai jamais essayé cette solution mais je compte également faire un moteur de recherche. Je me pose donc les même questions que toi.
Comme ca, je ne peux pas dire quelle est la solution la plus performante.
1) ramener tous les id et faire les recherches suivantes seulement sur l'id, ce qui simplifie les requetes suivante mais necessite 2 requetes pour l'affichage de la premiere page
2) utiliser les LIMIT et faire une requête complexe à chaque affichage de page.
3) peut être qu'il est possible d'utiliser le même statement pour toutes les requêtes ?
Je pense que pour l'instant je vais stocker les critères en session et utiliser le LIMIT
Dernière modification par bertra (24-05-2008 00:24:56)
Hors ligne
1) si tes params sont passés via GET tu n'as plus de soucis, ils sont dans l'URL
2) tu peux stocker le Rowset en cache/session (perso, le cache me semble plus logique) est jouer avec array_chunk. LIMIT n'est pas une directive SQL, elle n'est pas implémenter dans sybase par exemple
l'avantage du array_chunk, c'est que tu peux faire un helper pour ta pagination, qui acceptera n'importe quel tableau (venant d'un DB ou pas)
My 2 cents
Hors ligne