Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2012, 18h16   #1
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
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 ?
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 18h45   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
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
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h06   #3
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
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.
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h39   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour,
où est le problème ?

Code :
"SELECT ......... WHERE ville IN (".implode(',', $arrayVilles).");"
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h40   #5
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
Bon j'en suis arrivé là :

Code :
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)
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h41   #6
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
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 ?
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h50   #7
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Code :
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.");";
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h54   #8
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
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 :
$sql .= 'WHERE ville IN("' . implode('","', $villes) . '")' ;
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 19h57   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Code :
$sql .= 'WHERE ville IN("' . implode('","', $villes) . '")' ;
J'avais zappé les '...' ici ! Il suffisait d'y penser ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 20h02   #10
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
Jvous aime les mec

Un grand merci à vous pour m'avoir aidé et en plus appris quelque chose de nouveau !
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h48.


 
 
 
 
Partenaires

Hébergement Web