A voir également:
- Contruction d'une requete personnalisable
- Requête sql date supérieure à ✓ - Forum Programmation
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Virus
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ? ✓ - Forum Loisirs / Divertissements
- 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 ? - Forum Thunderbird
2 réponses
NHenry
Messages postés
15190
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 février 2025
353
4 déc. 2016 à 16:51
4 déc. 2016 à 16:51
Si tu veux gérer plusieurs conditions de manière variable tu peux faire un truc tu genre :
$Conditions=array(); if(...) $Conditions[]='NomJeu=...'; if(...) $Conditions[]='....'; if(count($Conditions)>0) $Sql.='WHERE '.implode(' AND ',$Conditions)
jordane45
Messages postés
38423
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 février 2025
4 734
Modifié par jordane45 le 4/12/2016 à 17:23
Modifié par jordane45 le 4/12/2016 à 17:23
Bonjour,
En complément de la réponse de Nhenry
revient plus simplement à
Idem pour les autres...
Et les différents IF proposés par NHENRY peuvent s'écrire plus proprement via l'écriture ternaire :
NB: Attention à l'utilisation des QUOTES pour entourer les "string".
NB² : La création d'une requête de cette façons ne te permettra pas d'utiliser les requêtes préparées de PDO (ce qui est fort dommage vu ce que ça amène en terme de sécurisation des données...) mais c'est toi qui vois.
Cordialement,
Jordane
En complément de la réponse de Nhenry
if (!($nomJeu == null)) {
revient plus simplement à
if($nomJeu){
Idem pour les autres...
Et les différents IF proposés par NHENRY peuvent s'écrire plus proprement via l'écriture ternaire :
$Conditions=array(); $Conditions[]= $nomJeu ? "NomJeu='$nomJeu'" : ''; $Conditions[]= $pegi? "pegi='$pegi'" : ''; //etc...
NB: Attention à l'utilisation des QUOTES pour entourer les "string".
NB² : La création d'une requête de cette façons ne te permettra pas d'utiliser les requêtes préparées de PDO (ce qui est fort dommage vu ce que ça amène en terme de sécurisation des données...) mais c'est toi qui vois.
Cordialement,
Jordane
Mais si je fais via écriture ternaire, le tableau conditions va se remplire même si ma valeur est null, je risque d'avoir une requete comme ça :
Il va pas y avoir un probléme avec l'exécution de la requête ?
$nomJeu= null; $pegi = 1; $Conditions=array(); $Conditions[]= $nomJeu ? "NomJeu='$nomJeu'" : ''; $Conditions[]= $pegi? "pegi='$pegi'" : ''; $Sql = 'SELECT * FROM JEU '; if(count($Conditions)>0) $Sql.='WHERE '.implode(' AND ',$Conditions); return $Sql; => SELECT * FROM JEU WHERE AND pegi='1'
Il va pas y avoir un probléme avec l'exécution de la requête ?
jordane45
Messages postés
38423
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 février 2025
4 734
>
Grafiteur
4 déc. 2016 à 19:07
4 déc. 2016 à 19:07
Au temps pour moi... j'ai oublié d'indiqué qu'avant de faire le IMPLODE tu peux faire un array_filter pour supprimer les "vides"
https://www.php.net/array_filter
https://www.php.net/array_filter