[RESOLU] Faire une condition PHP dans un SELECT sql

Eléphant du PHP | 218 Messages

31 janv. 2018, 01:54

Bonjour, afin d'effectuer l'affichage de mes articles triés par couleur, par matière ou autre j'aurais besoin de faire des conditions en PHP directement dans une requête sql.
En effet je voudrais pouvoir afficher tous les articles lorsque ma session vaut 'all' et sinon afficher la couleur contenu dans ma session. Pareil avec le choix de la matière.
Mais impossible de faire une cancaténation dans ma requête. Pouvez-vous m'aider svp ? Ou me dire s'il n'y a pas un autre moyen plus simple de faire cette opération.

		$sql_articles = $bdd->prepare('
								SELECT titre, url, prix, photo
								FROM articles
								WHERE afficher = :afficher';
								if ($_SESSION['trier']['couleur'] != 'all') { echo 'AND couleur= :couleur'; }
								if ($_SESSION['trier']['matiere'] != 'all') { echo 'AND matiere= :matiere'; }
                                                                echo ' ORDER BY ordre
								');
		$sql_articles->execute(array(
								'couleur' => $_SESSION['trier']['couleur'],
                                                                'matiere' => $_SESSION['trier']['matiere'],
								'afficher' => 1
								));
		$sql_articles->setFetchMode(PDO::FETCH_ASSOC);
		
Cadeaux personnalisés pour toute la famille :
https://cadeauxplaisir.com/

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 janv. 2018, 11:47

Une requête est simplement une chaine de caractères, donc prépare là dans une variable d'abord avec toutes les conditions que tu veux.
Tu peux en faire un echo à la fi de ta préparation pour vérifier que c'est bien la requête que tu attends, et ensuite tu as juste à passer cette variable en paramètre de ton prepare().

Attention, si tes paramètres sont différents, alors il faudra que tu adaptes également ce que tu passes dans ton execute()
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 218 Messages

01 févr. 2018, 18:24

Aaah yes bien vu! Merci beaucoup pour ton aide ;)
Cadeaux personnalisés pour toute la famille :
https://cadeauxplaisir.com/