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 :

Requête formulaire de recherche [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut Requête formulaire de recherche
    Bonjour,

    J'ai crée un formulaire de recherche qui récupère la valeur entrée par l'utilisateur.
    Je planche à présent sur la requête. Celle-ci doit vérifier si la chaîne existe dans un des champs de mon entité. Exemple. Je tape la chaîne "en" dans ma zone de recherche. Il devrait donc m'afficher les enregistrements contenant "en" tels que enseigne, tienne, etc. Vous voyez le principe.

    1ère question :

    Pourriez-vous me donner quelques infos à ce sujet car je suppose qu'il ne s'agit pas de faire un SELECT sur chaque champ.

    2ème question :

    Comment symfony gère t'il la sécurité de ce type de champ de recherche. Je parle d'injection par exemple. Est-ce les règles de validation qui s'occupe de sécuriser cela ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php public function getSearchList ($formvalue) 
    	{
     
    		$qb = $this->createQueryBuilder('a');
     
    		$qb->where('a.name LIKE :formvalue')
    			  ->orWhere('a.process LIKE :formvalue')
    			  ->setParameter('formvalue', $formvalue);
     
    		return $qb->getQuery()->getResult();
    	}
    Mais sans succès !

  3. #3
    Membre éclairé
    Profil pro
    IED Web
    Inscrit en
    Octobre 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : IED Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 60
    Par défaut
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php public function getSearchList ($formvalue) 
    	{
     
    		$qb = $this->createQueryBuilder('a');
     
    		$qb->where('a.name LIKE :formvalue')
    			  ->orWhere('a.process LIKE :formvalue')
    			  ->setParameter('formvalue', '%'. $formvalue .'%');
     
    		return $qb->getQuery()->getResult();
    	}

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Salut,

    avant de tester, j'ai une autre question. J'essaye en vain de récupérer la chaine entrée dans mon formulaire. Je fais ceci dans mon controleur :

    value est le nom du champ de mon formulaire de recherche dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     <?php
    //...
     
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('value', 'text');
        }
    //...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <?php
    $request = $this->getRequest();
    $formvalue= $request->request->get('value');
    Mon code me semble pourtant correcte.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Par défaut
    Ok c'est bon ça fonctionne j'ai pu récupérer ma valeur passée par mon formulaire.

    Ma requête marche également. Merci d'ailleurs.

    Autre question simple. Si je veux utiliser une chaîne et non un paramètre dans ma requête, quelle sera la synthaxe ? J'ai essayé ceci mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	<?php public function getSearchList ($formvalue) 
    	{
     
    		$qb = $this->createQueryBuilder('a');
     
    		$qb->where('a.name LIKE :formvalue')
    				  ->orWhere('a.process LIKE :formvalue')
    				  ->andWhere('a.active = active') // LIGNE QUI POSE PROBLEME
    				  ->setParameter('formvalue', '%'.$formvalue.'%');
     
    		return $qb->getQuery()->getResult();
    	}

    J'ai cette erreur :

    [Semantical Error] line 0, col 125 near 'active': Error: 'active' is not defined.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    Ca ressemble a un erreur "sql" ...
    Pour tester une valeur de type string il faut la mettre entre côtes ? non?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	<?php public function getSearchList ($formvalue) 
    	{
     
    		$qb = $this->createQueryBuilder('a');
     
    		$qb->where('a.name LIKE :formvalue')
    				  ->orWhere('a.process LIKE :formvalue')
    				  ->andWhere("a.active = 'active' ") // peut-être ? 
    				  ->setParameter('formvalue', '%'.$formvalue.'%');
     
    		return $qb->getQuery()->getResult();
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Formulaire de recherche: Requête sur l'ensemble des attributs d'une base de données
    Par arthur.moreau dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/07/2014, 09h09
  2. [Toutes versions] requête multiple dans formulaire de recherche multi critère.
    Par Lyude dans le forum IHM
    Réponses: 16
    Dernier message: 11/05/2010, 18h51
  3. Réponses: 2
    Dernier message: 04/05/2007, 10h55

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