Tirage des données par niveau

Résolu/Fermé
kanzory Messages postés 10 Date d'inscription mardi 13 mai 2014 Statut Membre Dernière intervention 4 juillet 2014 - 12 juin 2014 à 14:37
kanzory Messages postés 10 Date d'inscription mardi 13 mai 2014 Statut Membre Dernière intervention 4 juillet 2014 - 13 juin 2014 à 09:43
Bonjour,

Voici encore une question assez 'bete': je voulais faire un tirage des données par beaucoup de variable. Les variables sont venues des listes déroulantes. Le problème est que la variable reçue peut etre 'TOUS', et je ne connais pas comment gérer ce problème. Voici une essaie, mais j'ai une erreur :
Catchable fatal error: Object of class PDOStatement could not be converted to string

voici mon code:
if ($_POST['commune'] != "TOUS")
{
$req1 =$bdd -> query ("SELECT * FROM base8 WHERE commune ='".$_POST['commune']."'") or die (print_r($bdd->errorInfo()));
}
else {$req1 =$bdd -> query ("SELECT * FROM base8");}
if ($_POST['Poste_source'] != "TOUS")
{
$req2 =$bdd -> query ("SELECT * FROM $req1 WHERE poste_source = '".$_POST['Poste_source']."'") or die (print_r($bdd->errorInfo()));
}
else {$req2 = $req1;}
if ($_POST['depart'] != "TOUS")
{
$req3 =$bdd -> query ("SELECT * FROM $req2 WHERE depart = '".$_POST['depart']."'") or die (print_r($bdd->errorInfo()));
}
else {$req3 = $req2;}
if ($_POST['ID_emetteur'] != "TOUS")
{
$req4 =$bdd -> query ("SELECT * FROM $req3 WHERE ID_emetteur = '".$_POST['ID_emetteur']."'") or die (print_r($bdd->errorInfo()));
}
else {$req4 = $req3;}

voilà merci

1 réponse

Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
12 juin 2014 à 21:30
Bonjour,
Ton code n'est pas très logique, à ton premier IF, tu fais une requête, $req1 est donc ton jeu de résultat, tu ne peut pas l'insérer comme ça dans une autre requête (
SELECT * FROM $req1
).

Pour ton code, le plus simple est de construire ta requête, puis de faire ton query, un truc du genre :
$myquery="ELECT * FROM base8 WHERE 1";
if($_POST['commune'] != "TOUS")$myquery.=" AND commune='".$_POST['commune']."'";
$req1 =$bdd -> query ($myquery);

Par contre, vérifie ta sécurité, là j'ai repris ton code mais tu est vulnérable aux injections SQL.
1
kanzory Messages postés 10 Date d'inscription mardi 13 mai 2014 Statut Membre Dernière intervention 4 juillet 2014
13 juin 2014 à 09:43
C'est bien ça que je voulais. Merci beacuoup :)
0