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

Symfony PHP Discussion :

formulaire de recherche suivant deux liste déroulante


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 24
    Par défaut formulaire de recherche suivant deux liste déroulante
    Bonjour à tous,

    J'ai mes 4 tables 'parcsimmobilier', 'activitesbatiments', 'batiments' et pour finir 'ensembles'. Cette requête en SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            SELECT e.nom
            FROM `ensembles` e, `parcsimmobilier` p, `activitesbatiments` a, `batiments` b
            WHERE e.parcsimmobilier_id=p.id
            AND b.ensembles_id=e.id
            AND a.batiments_id=b.id
            AND p.id=1
            AND a.type="sport"
            GROUP BY e.id
    me donne le nom de tous les ensembles appartenant à un parc immobilier précis, suivant son type d'activité (ici sport par exemple).

    Je dois me basé sur cela pour créer un formulaire de recherche avec Symfony2 mais selon certaines conditions.

    Le formulaire de recherche ayant deux liste déroulantes et un input text: une liste pour Parcs, une autres pour type d'activités, et enfin l'input text permmettant de rentrer au moins 3 lettres du nom d'un ensemble. La recherche peut s'effectuer sans forcément choisir un type d'activité (donc on peut lancer la recherche sans en choisir) ou écrire les 3 lettres du nom de l'ensembles. Le parc par contre lui est obligatoire.

    Je suis confronté à 4 cas de figure pour gérer au mieux ce formulaire:
    1. rechercher le nom d'un ensemble selon le choix de la liste déroulante "Parcs" seulement
    => liste déroulante-> choix du Parc -> on clique sur le bouton rechercher -> affichage du nom des ensembles appartenant à ce parc

    2. rechercher le nom d'un ensemble selon le choix de la liste déroulante "Parcs" + selon le choix le la liste "type activité"
    => ((liste déroulante-> choix du Parc) + (liste déroulante-> choix "type activité"))on clique sur le bouton rechercher -> affichage du nom des ensembles appartenant à ce parc selon le type d'activité choisit

    3. Mais aussi rechercher le nom d'un ensemble selon le choix de la liste déroulante "Parcs" + selon le choix le la liste "type activité" + le texte du nom de l'ensemble rentrer dans un input de type texte (oui, contrainte du client, qui veut mettre l'auto-complétion plus tard)
    => ((liste déroulante-> choix du Parc) + (liste déroulante-> choix "type activité") + input text-> nom de l'ensemble)on clique sur le bouton rechercher -> affichage du nom des ensembles appartenant à ce parc selon le type d'activité choisit

    4. rechercher l'ensemble juste par son nom écrit dans le input text
    => liste déroulante-> choix du Parc + input text=nom de l'ensemble ou du moins chercher les ensembles ayant les lettre correspondantes

    Voici le code de ma twig pour lancer la recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
                    {# Selection des parcs #}
                    <div class="col-md-4">
                     <div class="form-group">
                       <div class="input-group input-group-sm">
                         <span class="input-group-addon"><strong>Parcs:</strong></span>
                         <select class="form-control" class="input-group">
                           <option disabled selected> Choisir un parc </option>
                           {% for parcsimmobilier in parc %}
                             <option value="parc">{{ parcsimmobilier.nom }}</option>
                           {% endfor %}
                         </select>
                        </div>
                      </div>
                    </div>
                    {# Selection des activités d'un ensembles #}
                    <div class="col-md-8">
                      <div class="form-group">
                        <div class="input-group input-group-sm">
                          <span class="input-group-addon"><strong>Type d'activité:</strong></span>
                          <select class="form-control" class="input-group">
                            <option disabled selected>Choisir le type d'activité de cet ensemble</option>
                            {% for activitesbatiments in typesactivite %}
                              <option value="typesactivite">{{ activitesbatiments.type }}</option>
                            {% endfor %}
                          </select>
                        </div>
                      </div>
                    </div>
                    {# input de recherche/saisi avec l'autocomplétion #}
                    <div class="col-md-10">
                     <div class="form-group">
                       <div class="input-group input-group-sm">
                         <span class="input-group-addon" for="tags"><b>Nom de l'ensemble:</b></span>
                         <input class="form-control" type="text" placeholder="Saisissez le nom de l'ensemble que vous recherchez si vous le connaissez"></input>
                        </div>
                      </div>
                    </div>
                    {# validation de recherche #}
                    <div class="col-md-2">
                      <a href="{{ path('recherche_ensembles') }}"><button class="btn btn-warning btn-sm">Rechercher</button></a></div>
                    </div>
    Le bouton "Rechercher" doit renvoyer sur la page affichant le résultat dont voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
                {# Tableau des résultats #}
                <div class="jumbotron">
                  <div class="table">
                    <table class="table table-hover table-striped table-condensed">
                      <thead>
                        <tr>
                            <th>Code de l'ensemble</th>
                            <th>Nom de l'ensemble</th>
                            <th>Nombre de batiments</th>
                            <th>Nom des batiments</th>
                        </tr>
                      </thead>
                      <tbody>
                        <tr>
                            <td>...</td>
                            <td>...</td>
                            <td>...</td>
                            <td>...</td>
                            <td><a href=""><button class="btn btn-default btn-xs">Generer la fiche de l'ensemble</button></a></td>
                            <td><a href=""><button class="btn btn-warning btn-xs">Modifier</button></a></td>
                        </tr>
                      </tbody>
                    </table>
                  </div>
                </div>
    Ce n'est pas très important, mais dans mon tableau le boutons générer va télécharger un fichier pdf, et le bouton modifier va permettre d'administrer la table Ensembles (ici ce n'est pas vraiment important)

    J'ai géré le choix des liste déroulantes donc je fais bien appel à mes entités dans mon controller pour ça, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    //METHODE Affichage et recherche des ensembles et leurs affectations spécifiques:
        public function indexEnsemblesAction() {
     
            $em=$this->getDoctrine()->getManager();
     
            $parc = $em->getRepository('MySpaceMyBundleBundle:Parcsimmobilier')->findAll();
            $activitesbatiments = $em->getRepository('MySpaceMyBundleBundle:Activitesbatiments')->findAll();
            $ensembles = $em->getRepository('MySpaceMyBundleBundle:Ensembles')->findAll();
            $batiments = $em->getRepository('MySpaceMyBundleBundle:Batiments')->findAll();
     
            $query = $em->createQuery('SELECT distinct a.type
                                       FROM MySpaceMyBundleBundle:Activitesbatiments a');
     
            $activitesbatiments = $query->getResult();
     
            $queryEnsembles = $em->createQuery('SELECT distinct e.nom
                                                FROM MySpaceMyBundle:Ensembles e');
     
            $ensembles = $queryEnsembles->getResult();
     
     
            return $this->render('MySpaceMyBundleBundle:Ensembles:indexEnsembles.html.twig', array( 'parc' => $parc, 'typesactivite' => $activitesbatiments, 'ensemble' => $ensembles ));
        }
    Donc c'est ma méthode pour générer mon formulaire de recherche.

    Je cherche donc à créer ma méthode public function rechercheEsemblesAction (). Mais avant tout essayer de paramétrer ce résultat selon mes choix et mes inputs dans le formulaire de recherche pour pouvoir l'afficher ensuite.

    Je travail dessus là, je ferai surement un update dans pas trop longtemps pour faire part de mes avancées. Toutefois je bloque vraiment sur l'affichage de mes résultats selon les conditions énumérées plus haut.

    Bien à vous.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 24
    Par défaut
    je post un petit UP en guise d'appel au secours. Personne n'a d'idées?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Par défaut
    Up quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $activitesbatiments = $em->getRepository('MySpaceMyBundleBundle:Activitesbatiments')->findAll();
    qui devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $activitesbatiments = $query->getResult();
    t'es pas clair toi

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/10/2011, 09h08
  2. Réponses: 8
    Dernier message: 03/08/2008, 14h59
  3. [Formulaire] lier deux listes déroulantes
    Par Ayack dans le forum IHM
    Réponses: 2
    Dernier message: 20/02/2008, 12h46
  4. Réponses: 3
    Dernier message: 23/03/2007, 10h08
  5. Réponses: 12
    Dernier message: 08/02/2007, 11h59

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