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

PHP & Base de données Discussion :

Mettre le contenu d'un array dans une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut Mettre le contenu d'un array dans une requête
    Bonjour à tous,

    Alors j'explique :

    J'ai une array avec des villes. Par exemple : array[0] = Lille, array[1] = Paris, array[2] = Lyon.

    Je veux faire une requête qui recherche un élément X dans ses 3 villes sans forcement faire 3 requêtes.
    De plus, l'array peut contenir 4, 5, 6 ou même 100 villes.

    Une sorte de "SELECT x FROM y WHERE ville = array[]"

    Comment puis-je faire svp ?

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Il faut générer une condition de la sorte :

    WHERE ville = 'Lille' OR ville = 'Lyon' OR ville = 'Paris'

    Ou :

    WHERE ville IN('Lille', 'Lyon', 'Paris')
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut
    Ca n'ira pas, les villes sont dans un array qui contient aléatoirement les villes et donc il peut y avoir un nombre énorme de ville. Après je peux aussi faire une boucle qui va scruté mon array et à chaque résultat, il va créer un "or ville = 'LaVille'".

    Par contre je ne sais plus comment scruter un array de l'emplacement X à l'a fin de l'array sans connaitre le nombre de valeur dans cet array.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    où est le problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ......... WHERE ville IN (".implode(',', $arrayVilles).");"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut
    Bon j'en suis arrivé là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		//Debut de la requete
    		$RqtAnnonce = "SELECT x FROM y WHERE z = v";	
    		
    		$number = 0;
    		
    		//On rajoute chaque ville en fin de requete
    		foreach ($ListeVille as $row){
    			
    			$RqtAnnonce .= " or ville = $ListeVille[$number]";
    			$number++;
    		}
    Le problème c'est que quand j'affiche ma requête, les noms de villes ne sont pas entouré de guillemet alors que PHPMYADMIN en demande pour valider la requête.

    J'ai donc cette requête là :
    SELECT x FROM y WHERE z = v and ville = Lille and ville = Roubaix

    Alors que phpmyadmin demande celle-ci :
    SELECT x FROM y WHERE z = v and ville = "Lille" and ville = "Roubaix" (ou avec des simples cotes)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut
    Oula jreaux62 je ne comprends pas ta requête, c'est du nouveau pour moi ce que tu viens de faire ! Tu peux m'expliquer stp ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    //On doit d'abord ajouter les '....' pour chaque nom de ville :
    foreach($arrayVilles as $id => $ville){
       $arrayVilles[$id] = "'".$ville."'";
    }
    // on concatène, avec une virgule comme séparateur
    $IN_listeVilles = implode(',', $arrayVilles); // on obtient : 'Lille','Paris','Marseille',.........,'derniere ville'
    // enfin, dans la requete :
    $query = "SELECT ......... WHERE ville IN (".$IN_listeVilles.");";
    ?>

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par chido Voir le message
    Le problème c'est que quand j'affiche ma requête, les noms de villes ne sont pas entouré de guillemet
    Suffit de rajouter des ' (ou des ") dans la construction de ta requête.

    Avec implode( ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= 'WHERE ville IN("' . implode('","', $villes) . '")' ;
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql .= 'WHERE ville IN("' . implode('","', $villes) . '")' ;
    J'avais zappé les '...' ici ! Il suffisait d'y penser ...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut
    Jvous aime les mec

    Un grand merci à vous pour m'avoir aidé et en plus appris quelque chose de nouveau !

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

Discussions similaires

  1. [PHP 5.4] Mettre le contenu d'un array dans un fichier
    Par aspkiddy dans le forum Langage
    Réponses: 9
    Dernier message: 06/03/2014, 22h56
  2. [AC-2010] mettre le contenu d'une variable dans une requête
    Par idiot dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/10/2010, 08h24
  3. Réponses: 3
    Dernier message: 28/05/2009, 15h27
  4. Mettre le contenu de plusieurs lignes dans une seule case
    Par bellamouna dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 09/12/2008, 12h11
  5. Mettre le contenu d'un TMemo dans une variable
    Par beral dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/08/2006, 00h57

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