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 SELECT sur une partie de colonne [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Points : 16
    Points
    16
    Par défaut Requête SELECT sur une partie de colonne
    Bonjour,

    Je n'ai pas trouvé de nom approprié pour ma question, mais je voudrais savoir comment exécuter une requête sur une partie de ma colonne.

    j'ai une table qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `installateurs` (`id`, `nom`, `cp`, `ville`, `tel`, `mobile`, `fax`, `adresse`, `email`, `secteur`) VALUES
    (1, 'BIMER', '94120', 'Fontenay-sous-Bois', '01 00 00 00 52', '06 00 00 00 52', '01 00 00 00 52', '19, Avenue Stalingrad', 'info@monsite.fr', '94120, 93310, 93330, 93360');
    J'effectue une requête sur le secteur réservée à cette personne :

    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
                    if(isset($_POST['submit'])){
                        if($_POST['cp']){
     
                            $secteur = $_POST['cp'];
                            $em = $this->getDoctrine()->getEntityManager();
                            $query = $em->createQuery(
                                'SELECT s
                                FROM ExtranetGeneralBundle:installateurs s
                                WHERE s.secteur = :secteur'
                            )->setParameter('secteur', $secteur);
     
                            $serruriers = $query->getResult();
     
                            }
     
                            else echo "<div class=\"erreur\">Veuillez saisir un code postal.</div>";;
                        }
    Je voudrais savoir comment faire pour que ma requête sélectionne une parti de la colonne "SECTEUR" et non la totalité ?

    Exemple : $_POST['cp'] = '94120';

    J'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    )->setParameter('secteur', "%".$secteur."%");
    Mais ça ne fonctionne pas non plus.

    Ps: il y a la solution de créer une ligne pour chaque secteur mais je voudrais me passer de celle-ci.

    j'espère avoir été assez explicite, et merci pour vos réponses futures.

    EDIT : j'ai avancé, la requête retourne maintenant le premier paramètre '94120' mais ne prend pas les autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     )->setParameter('secteur', "%"+$secteur+"%");

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    yoooooooooooooooooooh man,


    il n'y a pas besoin de %, ce n'est pas un like que tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    )->setParameter('secteur', $secteur);
    puis avec doctrine il y a plus rapide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $res = $this->getDoctrine()->getRepository('ExtranetGeneralBundle:installateurs ')->findBySecteur($secteur);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Points : 16
    Points
    16
    Par défaut
    Salut,

    Bah quand je fais $secteur simplement il ne me trouve aucune variable.

    secteur = '94500 94100 94560'

    Si $secteur = '94500' il ne me retourne rien alors que si $secteur = '94500 94100 94560', là il me retourne la requête.

  4. #4
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    En fait, je pense que tu as des soucis sur les bases, et que ca ne t'aide pas.

    1 : les variables $_POST,ca ne devrait pas exister ici, va faire un tour sur les formulaires symfony.
    2 : la requête avec en paramètre une valeur de formulaire non testée (est-ce un numérique, un id, une chaine, une injection SQl, ???)
    3 : utilise doctrine comme on te l'a suggéré.
    4 : fait un schéma de base de donnée propre. Si tu as plusieurs secteurs, tu ne fait pas un champs "secteur 1 secteur 2 secteur 3" tu créé une relation many to many entre ta table installateurs et la table secteur. Tu verra que d'un seul coup tes requêtes seront vachement plus simple à faire et plus rapide.

    De manière générale, au niveau de difficulté ou tu es, si c'est compliqué, c'est souvent que tu t'y prends de la mauvaise façon et qu'un tour dans la doc ne fera pas de mal.

    Cherche le tuto jobeet en ligne. Tu y passeras 3-5 jours, mais tu en sortira avec des bases solides qui t'aideront par la suite.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chef de projet multimédia
    Inscrit en
    Juin 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet multimédia
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 35
    Points : 16
    Points
    16
    Par défaut
    Entendu, merci pour le conseil, je fonce sur Jobeet...


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/10/2013, 11h47
  2. Réponses: 7
    Dernier message: 18/06/2012, 15h53
  3. DISTINCT sur une partie des colonnes
    Par moshehayun dans le forum Développement
    Réponses: 2
    Dernier message: 04/01/2012, 12h13
  4. Optimisation d'une requête SELECT sur une grosse table
    Par eracius dans le forum Requêtes
    Réponses: 4
    Dernier message: 26/05/2008, 14h51
  5. Select sur une partie d'un champs texte
    Par dl_jarod dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/11/2005, 15h25

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