IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Formulaire de recherche/filtrage


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Formulaire de recherche/filtrage
    Bonjour

    Je développe une application web avec ZF. Plusieurs action permettent l'affichage de données. Et pour éviter d'avoir des centaines de lignes affichées sur une seule page, j'ai mis en place un système de paginations basé, globalement, sur le même principe que ce tuto : http://julien-pauli.developpez.com/t...istage-tables/ .
    Jusqu'à présent tout fonctionne parfaitement. Mais je souhaite ajouter, pour les actions devant afficher beaucoup de données, un formulaire permettant de rechercher/filtrer les données selon certains critères (date, nom, ...). J'ai donc ajouté un formulaire et une fonction dans mon contrôleur (en réalité le contrôleur parent de tous mes contrôleurs) qui va traiter les données du formulaire et exécuter la requête en conséquence.
    Voilà, ici encore, ça fonctionne plutôt bien.

    Les problèmes surviennent lorsque la pagination est utilisé parallèlement à la fonction de recherche. En gros tout fonctionne uniquement si je me trouve sur la première page.

    Exemple du problème qui se pose :

    Mes URL sont semblable à ceci :

    www.truc.com/module/controleur/action

    et lorsque la pagination est utilisée :

    www.truc.com/module/controleur/action/page/1
    www.truc.com/module/controleur/action/page/2
    ...

    L'url de l'action à exécuter par le formulaire est déterminée par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->Url(array())
    Ce qui fait que si j'envoie le formulaire alors que je me trouve, disons, sur la page 3, j'aurai au final la page trois affichée. Même si je n'ai pas trois pages de résultats après recherche.

    Mes idées pour éviter ce genre de problème :

    vérifier si la requête est de type GET ou POST. Si c'est POST c'est que le formulaire a été envoyé, il s'agit d'une recherche et donc réduction de l'url www.truc.com/module/controleur/action/page/2 à www.truc.com/module/controleur/action

    Mais il y a un autre problème. si la recherche me donne effectivement plusieurs page et que je passe à la page suivante la recherche sera perdue et j'aurai à nouveau la totalité des enregistrements. Pour ce problème-ci, je pense enregistrer les données du formulaire en session et les récupérer lors du passage à la page suivante.


    j'aurais donc quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if post
       réduction de l'url
       requête filtrée
    else if session
       requête filtré
    else
       requête "normale"


    Voilà mes idées actuelles.

    Mais je suis débutant avec ZF, donc je me demandais s'il y avait un moyen de gérer ce type de recherche plus facilement


    Merci d'avance pour vos commentaire

  2. #2
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Par défaut
    Bonjour,

    J'ai eu pendant un temps le même souci, 3 critères de tri differents pouvant être utilisés en simultanés + pagination
    Pour résoudre les problèmes d'url, je regenère des url spéciales pour chaque critère de tri dans ma vue ( je lui assign tous les paramètres pour les récuperer )
    Donc par exemple je veux un tri ( date ou nom ), puis avoir la page 2, je fais une url ou j'ai <base>?order=date, et une autre ou j'ai <base>? Ensuite, à l'endroit ou je dois avoir les liens, je réutilise ces liens, c'est à dire : si on est dans le cas pour changer de tri, je reprends <base>?, et j'ajoute &tri=date ou &tri=nom, si on est dans le cas d'un changement de page, je reprends <base>?order=date, et j'ajoute &page=x

    Bon, c'est sur, c'est pas générique, pas évolutif, mais ca marche @_@
    En esperant que tu ais compris l'idée
    Bonne chance !

Discussions similaires

  1. formulaire de recherche , filtrage des données
    Par abdelkarim_1987 dans le forum jQuery
    Réponses: 31
    Dernier message: 12/07/2013, 19h23
  2. Formulaire de recherche avec filtrage
    Par redo_log dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/03/2009, 16h19
  3. alléger un formulaire de recherche
    Par jarod71 dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2005, 11h11
  4. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  5. Réponses: 5
    Dernier message: 18/10/2005, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo