Problème requête imbriquée
Résolu
ssx32
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
ThEBiShOp Messages postés 8411 Date d'inscription Statut Contributeur Dernière intervention -
ThEBiShOp Messages postés 8411 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai une requête sql imbriquée aprés la clause IN d'une autre requête, lorsque je teste sur la console sql ça marche nickel mais en php ça me sort :
mysql_fetch_array() expects parameter 1 to be resource
je résume une peu mon code :
cette requête me sert a filtrer les résultat par pays
quand je ne fait pas de filtrage la requête s'exécute normalement
si quelqu'un peut me dire ou je me suis planté ça sera sympa
merci :)
j'ai une requête sql imbriquée aprés la clause IN d'une autre requête, lorsque je teste sur la console sql ça marche nickel mais en php ça me sort :
mysql_fetch_array() expects parameter 1 to be resource
je résume une peu mon code :
$c = " AND 1=1"; if (!EMPTY($_POST['pays'])) { $rep=mysql_query("SELECT nom FROM client WHERE pays= '".$_POST['pays']."'"); while ($row=mysql_fetch_array($rep)){ $repti=$repti .$row[nom]; } $c = $c . "AND liste_commande.client IN ('".$repti."')"; } $sql = "SELECT DISTINCT liste_commande.n_of,liste_commande.id,liste_commande.date,liste_commande.client,liste_commande.n_commande_client,liste_commande.reference_produit,liste_commande.designation,liste_commande.reference_client,liste_commande.delai_demande,liste_commande.site_concerne,liste_commande.quantite WHERE ".$c." ORDER BY liste_commande.date "; $s = mysql_query($sql); while ($r = mysql_fetch_array($s)){ // affichage des données }
cette requête me sert a filtrer les résultat par pays
quand je ne fait pas de filtrage la requête s'exécute normalement
si quelqu'un peut me dire ou je me suis planté ça sera sympa
merci :)
A voir également:
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ?
- Impossible de supprimer une page word - Guide
- Creation de site web - Guide
- Google moteur de recherche page d'accueil - Guide
- Web office - Guide
- Utorrent recherche de pairs ✓ - Forum Téléchargement
3 réponses
Salut,
Déjà, à la suite de tes mysql_query, tu devrais rajouter un die :
S'il y a une erreur dans ta requête, ça te donnera des infos.
Ce que tu peux faire aussi, c'est afficher ton $sql pour être certain que la requête a été bien construite.
Déjà, à la suite de tes mysql_query, tu devrais rajouter un die :
$s = mysql_query($sql) or die(mysql_error());
S'il y a une erreur dans ta requête, ça te donnera des infos.
Ce que tu peux faire aussi, c'est afficher ton $sql pour être certain que la requête a été bien construite.
merci ThEBiShOp pour ta réponse rapide,
séparément mes requêtes fonctionnent mais quand elles sont imbriquées ça plante.
avec le mysql_error() ça me dit que j'ai une erreur de syntaxe après le IN
séparément mes requêtes fonctionnent mais quand elles sont imbriquées ça plante.
avec le mysql_error() ça me dit que j'ai une erreur de syntaxe après le IN
quand j'affiche la requête ce qui cloche c'est que après IN les résultats doivent être séparé par "," donc j'ai fait :
mais ça marche toujours pas :s
while ($row=mysql_fetch_array($rep)){ $repti=$repti .$row[nom]; $repti = $repti.",";
mais ça marche toujours pas :s
j'ai trouvé la solution je post si quelqu'un en aura besoin
la clause in doit avoir cette syntaxe: IN ('var1','var2','var3') et mon code affiche ( var1,var2,var3,)
pour y remedier :
la clause in doit avoir cette syntaxe: IN ('var1','var2','var3') et mon code affiche ( var1,var2,var3,)
pour y remedier :
$c = " AND 1=1"; if (!EMPTY($_POST['pays'])) { $rep=mysql_query("SELECT nom FROM client WHERE pays= '".$_POST['pays']."'"); while ($row=mysql_fetch_array($rep)){ $repti=$repti." ' " . $row[nom]; //ajouter le separateur " ' " avant la variable $repti = $repti." '," ; //ajouter le separateur " ' , " aprés la variable } $go=substr($repti, 0, -1); // enlever la dérniere virgule $c = $c . " AND liste_commande.client IN (".$go.")"; } $sql = "SELECT DISTINCT liste_commande.n_of,liste_commande.id,liste_commande.date,liste_commande.client,liste_commande.n_commande_client,liste_commande.reference_produit,liste_commande.designation,liste_commande.reference_client,liste_commande.delai_demande,liste_commande.site_concerne,liste_commande.quantite WHERE ".$c." ORDER BY liste_commande.date "; $s = mysql_query($sql); while ($r = mysql_fetch_array($s)){ // affichage des données }