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 18/05/2011, 09h59   #1
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Par défaut Requêtes SQL paramétrée avec un array()

Bonjour à tous,

J'ai une zone de selection multiple via laquelle je selectionne plusieurs valeurs que je récupére dans un tableau:

Voila ma zone de selection multiple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<select name="lstbox1" id="one" size="5" multiple="multiple"STYLE="height:150; width:400 ; color:#606060; face:arial; font-weight:bold;"ondblclick="bascule(this,'two')" >
<?php
//on recupere le champs Code groupe et libelle client 
$champs1=$result->Fields(0);
$champs2=$result->Fields(1);
// on affiche le resultat dans la zone de selection multiple 
while (!$result->EOF) 
{
	echo "<option value=".$champs1->value.">".$champs1->value." <b>|</b> ".$champs2->value."</option>";
$result->MoveNext();
}
?>
</select>
<!-- Les valeurs seléctionnées sont basculer sur ce <select multiple> -->
<select name="code_groupe[]" id="two" ondblclick="bascule(this,'one')"STYLE="height:150 ; width:400; color:#ff0000; face:arial; " multiple="multiple" size="9"> 
</select>

Ensuite je récupere les valeurs selectionnées :
Code :
1
2
3
4
5
6
7
8
 
if(isset($_POST['code_groupe']))
{
$code_groupe = $_POST['code_groupe'];
$nb1 = count($code_groupe);
}
else 
$code_groupe = "";

Les valeurs que j'ai récupérer sont dans mon tableau $code_groupe!
Ma question est comment puis-je les passer en paramètre dans une requete SQL :

Par exemple :
Code :
1
2
3
SELECT * FROM matable 
where champs= '$code_groupe[1]' 
OR champs= '$code_groupe[2]'
...etc

Merci d'avance pour votre aide
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 10h52   #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 449
Points : 3 449
Si est un tableau alors tu peux faire :

Code :
$sql .= 'WHERE champ IN(' . implode(', ', $_POST['code_groupe'] . ')' ;
Ce qui créera un WHERE du type :

Code :
WHERE champ IN(123, 234, 876)
__________________
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 18/05/2011, 11h20   #3
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Merci pour ta réponse Séb !

Effectivement je crois que cette solution me conviendrais mais j'ai un souci de syntaxe un ";" ou une cote en tro...
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 11h29   #4
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 449
Points : 3 449
Bout de script ?
__________________
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 18/05/2011, 11h36   #5
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Voici ma requete :
Code :
1
2
3
4
5
6
 
$requete = ' SELECT  mes_champs				
			FROM mes_tables					
			WHERE WRKPCSDTA1_OMA_HISCOM.BCCDZA IN(' . implode(', ', $_POST['code_groupe'] .')		
			GROUP BY mes_champs
			';
et l'erreur:
Code :
1
2
 
Parse error: syntax error, unexpected ';' in G:\ISD\BDD MySQL\EasyPHP-5.3.3\www\Applicom\connexion_access.php on line 49
Qui correspond au point virgule en bout de requete
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 18/05/2011, 11h40   #6
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 449
Points : 3 449
Manque la parenthèse fermante du implode( ).
__________________
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 18/05/2011, 11h52   #7
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
effectivement avec la parenthese je n'ai plus l'erreur

Mais par contre j'ai :
Code :
1
2
3
 
 
Data type mismatch in criteria expression
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 11h56   #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 449
Points : 3 449
Quel type de données pour WRKPCSDTA1_OMA_HISCOM.BCCDZA ?
Si chaînes :

Code :
WHERE WRKPCSDTA1_OMA_HISCOM.BCCDZA IN("' . implode('", "', $_POST['code_groupe']) . '")
__________________
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 18/05/2011, 12h05   #9
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Mon champs est une chaine , j'ai fait la modification que tu m'a dit mais ya un truc qui cloche !
Voila ma requete complete :

Code :
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
 
$requete = ' SELECT 
					WRKPCSDTA1_OMA_HISCOM.PERIODE, 
					WRKPCSDTA1_OMA_HISCOM.BCCDZA AS Code_Groupe, 
					WRKPCSDTA1_OMA_HISCOM.BCAN8X AS Compte_Client, 
					WRKPCSDTA1_OMA_HISCOM.BCB3CD AS N°_Liasse, 
					WRKPCSDTA1_OMA_HISCOM.BCB4CD AS Liasse_Rattachée, 
					WRKPCSDTA1_OMA_HISCOM.BCCRTX AS Signataire,
					WRKPCSDTA1_OMA_HISCOM.BCCPNB AS Nb_Terminaux, 
					WRKPCSDTA1_OMA_HISCOM.BCCONB AS Nb_Lignes, 
					WRKPCSDTA1_OMA_HISCOM.BCCQNB AS Nb_Accessoires, 
					WRKPCSDTA1_OMA_HISCOM.BCEBNB AS Nb_Cartes_SIM, 
					WRKPCSDTA1_OMA_HISCOM.BCCQTX AS Référence_Commandes, 
					WRKPCSDTA1_OMA_HISCOM.BCB1CD AS Type_Commandes ,
					TABLE_PROFIL.Profil_Dise,
					Tb_statut_cdes.Code_statut
 
				FROM (WRKPCSDTA1_OMA_HISCOM INNER JOIN Tb_statut_cdes ON WRKPCSDTA1_OMA_HISCOM.BHCNST = Tb_statut_cdes.Code_statut) 
					INNER JOIN TABLE_PROFIL ON WRKPCSDTA1_OMA_HISCOM.BHCKZJ = TABLE_PROFIL.Profil_DISE
				WHERE WRKPCSDTA1_OMA_HISCOM.BCCDZA IN("' . implode('", "', $_POST['code_groupe']) . '") 
 
				GROUP BY WRKPCSDTA1_OMA_HISCOM.PERIODE, WRKPCSDTA1_OMA_HISCOM.BCCDZA, WRKPCSDTA1_OMA_HISCOM.BCAN8X, 
				WRKPCSDTA1_OMA_HISCOM.BCB3CD, WRKPCSDTA1_OMA_HISCOM.BCB4CD, WRKPCSDTA1_OMA_HISCOM.BCCRTX, 
				WRKPCSDTA1_OMA_HISCOM.BCCPNB, WRKPCSDTA1_OMA_HISCOM.BCCONB, WRKPCSDTA1_OMA_HISCOM.BCCQNB, 
				WRKPCSDTA1_OMA_HISCOM.BCEBNB, WRKPCSDTA1_OMA_HISCOM.BCCQTX, WRKPCSDTA1_OMA_HISCOM.BCB1CD,TABLE_PROFIL.Profil_Dise,Tb_statut_cdes.Code_statut
et lerreur :

Code :
1
2
 
Too few parameters. Expected 1
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 12h19   #10
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 449
Points : 3 449
Si tu affiches la requête le IN( ) est vide ou pas ?
__________________
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 18/05/2011, 13h38   #11
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
c'est à dire l'afficher ?
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 13h49   #12
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Ah oui j'ai afficher ma requete et les valeur que je selectionne sont bien mis en parametre dans ma requete :

Code :
1
2
 
IN("000472","000352")
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h07   #13
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
En faite j'ai trouvé mon probleme
il faut que je remplace :

Code :
1
2
 
IN("000472","000352")
par
Code :
1
2
 
IN('000472','000352')
Voila un petit rappel de l'alimentation de ma clause where

Code :
1
2
 
where mon_champs IN("' . implode('","', $code_groupe) . '")
Serait-tu comment faire seb ?
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 17h30   #14
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 449
Points : 3 449
Remplate les " par des \'

Quel SGBD utilises-tu ?
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h28.


 
 
 
 
Partenaires

Hébergement Web