8800 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une base sql avec les champs jour, mois et annee.

Je cherche a filtrer par rapport a ces champs pour recuperer mes données par annee (exemple "2009") par mois et annee (exemple "02 2009") par jour et mois (exemple "10 02" pour 10 fevrier) et par jour, mois et annee (exemple "10 02 2009" pour 10 fevrier 2009).

j'ai essayer avec ce code sans succes

    $SQL = "SELECT * FROM intervention WHERE jour = '$client' OR mois = '$client' OR annee = '$client' OR mois&annee ='$client'";


Je pense que le probleme viens des & mais je ne sais pas par quoi les remplacer.

Merci pour votre aide
Modifié par mokacola (09 Jan 2009 - 15:41)
Slt dew
Merci pour ta reponse.

j'ai essayer avec :

    $SQL = "SELECT * FROM intervention WHERE annee = '$client' OR CONCAT('mois','annee') = '$client' OR CONCAT('jour','mois') = '$client' OR CONCAT('jour','mois','annee') = '$client'";


mais ca ne fonctionne pas.
J'ai pourtant regarder le role de concat et ca syntax et ca correspond à ce que je veut faire. J'ai aussi essayer avec concat_ws sans plus de succes.
La date de ta variable est sous la forme suivante : "08 01 2009". Or en concaténant, tu obtiendras en SQL "08012009". Essaye donc en enlevant les espaces.
Administrateur
[quote=mokacola]CONCAT('jour','mois','annee')[/code]

ce n'est pas pareil que CONCAT(jour,mois,annee).

dans le premier cas ce sont des chaînes de texte, dans le deuxième le nom des champs donc :

CONCAT('jour','mois','annee') renverra toujours => jourmoisannee, qui ne sera jamais juste.
CONCAT(jour,mois,annee) renverra les valeurs concaténées des champs (sans espaces, il faut ajouter ' ', entre ces 3 arguments pour en obtenir).

quoiqu'il en soit, cette requête est loin d'être optimale. si ta table est destinée à recueillir beaucoup de données et à être interrogée fréquemment, cela va tuer - métaphoriquement - le serveur.
Merci dew sans les apostrophes ca fonctionne effectivement


    $SQL = "SELECT * FROM intervention WHERE annee = '$client' OR CONCAT(mois,' ',annee) = '$client' OR CONCAT(jour,' ',mois) = '$client' OR CONCAT(jour,' ',mois,' ',annee) = '$client'";