Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2864 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete MySQL avec condition globale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete MySQL avec condition globale

n°1963067
garath_
Posté le 04-02-2010 à 19:55:27  profilanswer
 

Bonjour,
 
Je souhaiterai créer une requête MySQl du type:
 
'SELECT * FROM champ WHERE machin =' . $condition
 
Je voudrais que la variable $condition puisse prendre toutes les valeurs présente dans le champ machin dans certains cas.
J'ai donc essayé de lui attribuer une valeur joker du type * ou %, mais ça ne passe pas.
 
Je pense que je m'y prend mal, mais je ne vois pas comment faire...
 
Merci de votre aide.

mood
Publicité
Posté le 04-02-2010 à 19:55:27  profilanswer
 

n°1963073
flo850
moi je
Posté le 04-02-2010 à 20:44:32  profilanswer
 

donc en fait, dans certains cas, tu voudrais juste fair eun SELECT * FROM champ  
 
c'est ça ?


---------------

n°1963077
garath_
Posté le 04-02-2010 à 21:09:24  profilanswer
 

Oui au final c'est bien ça sauf que j'ai d'autres conditions.
En fait j'ai trouvé un moyen:
 
'SELECT * FROM champ WHERE machin LIKE $condition
 
où $condition= '%'

n°1963079
flo850
moi je
Posté le 04-02-2010 à 21:11:40  profilanswer
 

et si tu ne mettais pas de condition dans ce cas ?


---------------

n°1963097
garath_
Posté le 04-02-2010 à 22:32:24  profilanswer
 

oui mais c'est une fonction qui est appelée donc parfois j'ai une condition et d'autres fois non...
Je ne sais pas comment le gérer autrement...

n°1963118
mrbebert
Posté le 04-02-2010 à 23:47:20  profilanswer
 

C'est pas forcément une mauvaise chose. De toute façon, l'optimiseur de requête prendra les mesures nécessaires :)

n°1963197
rufo
Pas me confondre avec Lycos!
Posté le 05-02-2010 à 10:50:43  profilanswer
 

Ben suffit de faire un test si y'a besoin de mettre la condition ou pas.  

Code :
  1. $condition = '';
  2. if (Le test qui va bien) {
  3.   $condition = 'Where machin = '.$Valeur;
  4. }
  5. $Sql = "SELECT * FROM champ $condition";


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1963613
d@kn1ko
Posté le 06-02-2010 à 15:17:20  profilanswer
 

bon la syntaxe est pas forcement correct au niveau des apostrophe et quote mais voila l idée
 
if(le test){
$condition ="and machin='$filtre'";
}else{
$condition='';
}
 
$sql="select * from champ where 1=1 '$condition'";
 
ca marchera qu'il y ai une condition ou non.
le $condition serait dans ton cas le retour de ta fonction

Message cité 1 fois
Message édité par d@kn1ko le 06-02-2010 à 15:24:44
n°1963852
rufo
Pas me confondre avec Lycos!
Posté le 08-02-2010 à 11:11:42  profilanswer
 

d@kn1ko a écrit :

bon la syntaxe est pas forcement correct au niveau des apostrophe et quote mais voila l idée
 
if(le test){
$condition ="and machin='$filtre'";
}else{
$condition='';
}
 
$sql="select * from champ where 1=1 '$condition'";
 
ca marchera qu'il y ai une condition ou non.
le $condition serait dans ton cas le retour de ta fonction


 
Ca revient exactement au même que le code que j'ai proposé précédemment :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1963856
fred777888​999
Posté le 08-02-2010 à 11:23:41  profilanswer
 

Oui, sauf que la syntaxe est plus modulaire et te permet d'enchainer les conditions (en concatenant des and dans tous les cas) sans te demander si tu as deja ecrit le where ou non. Une autre solution plus elegante consiste a utiliser une variable 'separateur' comme suit :

Code :
  1. $separateur = 'where ';
  2. $condition = '';
  3. if(le test 1) {
  4.    $condition .= $separateur;
  5.    $condition .= "machin=$filtre1";
  6.    $separateur = 'and ';
  7. }
  8. if(le test 2) {
  9.    $condition .= $separateur;
  10.    $condition .= "machin=$filtre2";
  11.    $separateur = 'and ';
  12. }
  13. $sql = "select * from champ $condition";


Message édité par fred777888999 le 08-02-2010 à 11:24:05
mood
Publicité
Posté le 08-02-2010 à 11:23:41  profilanswer
 

n°1964019
garath_
Posté le 08-02-2010 à 19:26:55  profilanswer
 

Merci de vos réponses!
J'ai un peu laissé tomber cette partie pour l'instant j'y reviendrai certainement plus tard.
JE vais voir pour la solution par le test.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete MySQL avec condition globale

 

Sujets relatifs
PB requête récursivetrigger sous requete
Insertion Mysql champ Text plante ! via Zend[RESOLU] Soucis avec mysql_fetch_array dans une fonction
Problème conditions requete SQLAfficher le détail d'un enregistrement après un classement (PHP/MYSQL)
[PHP/HTML/MySql] Outils de dev freeware [Résolu]Problème d'integration du module javascript Lighbox avec une bdd mysql
[MYSQL]classement tounois[PHP/MySQL] Créer une interface d'affichage multimédia
Plus de sujets relatifs à : Requete MySQL avec condition globale


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR