[RESOLU] Faire une condition PHP dans un SELECT sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Faire une condition PHP dans un SELECT sql

Re: Faire une condition PHP dans un SELECT sql

par wwwbillgates » 01 févr. 2018, 18:24

Aaah yes bien vu! Merci beaucoup pour ton aide ;)

Re: Faire une condition PHP dans un SELECT sql

par @rthur » 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()

Faire une condition PHP dans un SELECT sql

par wwwbillgates » 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);