BOnjour,

je m'arrache les cheveux sur qq chose dont la réponse doit êter extra simple, comme d'habitude.
J'ai une BDD avec pour chaque ligne 5 dates, chacune représentée par une colonne jour, une colonne mois, une colonne année. Quand il n'y a rien, la cellule est NULL
je souhaite sortir uniquement les lignes qui comprennent au moins une date supérieure à la date du jour. Or ma requête me sort toutes les dates.

N'ayant pas trop su comment bien l'écrire,je l'ai fractionnée en deux : SOIT mois supérieur au mois de la date OU mois égal au mois de la date et jour supérieur à aujourd'hui

Voila ce que ca donne avec un exemple copié dans PHPmyadmin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
requête SQL:SELECT count( * ) AS nb_res
FROM guide, aide_st
WHERE guide.structure = aide_st.s_clef
AND s_clef = "189"
AND (
(
mois1 > "11"
AND annee1 >= "2006"
)
OR (
mois2 > "11"
AND annee2 > "2006"
)
OR (
mois3 > "11"
AND annee3 >= "2006"
)
OR (
mois4 > "11"
AND annee4 >= "2006"
)
OR (
mois5 > "11"
AND annee5 >= "2006"
)
OR (
jour1 > "29"
AND mois1 = "11"
AND annee1 >= "2006"
)
OR (
jour2 > "29"
AND mois2 = "11"
AND annee2 >= "2006"
)
OR (
jour3 > "29"
AND mois3 = "11"
AND annee3 >= "2006"
)
OR (
jour4 > "29"
AND mois4 = "11"
AND annee4 >= "2006"
)
OR (
jour5 > "29"
AND mois5 = "11"
AND annee5 >= "2006"
)
OR (
rythme != ""
)
)

et le code donne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
{$sql1 .= ' AND s_clef= "'.$_SESSION['s_clef'].'"';
$sql1 .= ' AND 
((mois1 >= "'.$_SESSION['mois'].'" AND annee1 >= "'.$_SESSION['annee'].'" ) 
OR 
(mois2 >= "'.$_SESSION['mois'].'" AND annee2 >= "'.$_SESSION['annee'].'" ) OR 
(mois3 >= "'.$_SESSION['mois'].'" AND annee3 >= "'.$_SESSION['annee'].'" ) OR 
(mois4 >= "'.$_SESSION['mois'].'" AND annee4 >= "'.$_SESSION['annee'].'" ) OR 
(mois5 >= "'.$_SESSION['mois'].'" AND annee5 >= "'.$_SESSION['annee'].'" )
 //le jour en plus
OR (jour1 > "'.$_SESSION['jour'].'" AND mois1 = "'.$_SESSION['mois'].'" AND annee1 >= "'.$_SESSION['annee'].'" ) 
OR (jour2 > "'.$_SESSION['jour'].'" AND mois2 = "'.$_SESSION['mois'].'" AND annee2 >= "'.$_SESSION['annee'].'" )
OR (jour3 > "'.$_SESSION['jour'].'" AND mois3 = "'.$_SESSION['mois'].'" AND annee3 >= "'.$_SESSION['annee'].'" )
OR (jour4 > "'.$_SESSION['jour'].'" AND mois4 = "'.$_SESSION['mois'].'" AND annee4 >= "'.$_SESSION['annee'].'" )
OR (jour5 > "'.$_SESSION['jour'].'" AND mois5 = "'.$_SESSION['mois'].'" AND annee5 >= "'.$_SESSION['annee'].'" ) OR(rythme != "")) ';
 
		}
j'ai pourtant des lignes prises en compte, alors que
rythme est vide
jours 1=06
mois1 = 09
annee1 = 2006

les variables de session jour, mois, année sont définies avec {$jour=date("Y-m-d");


Merci à ceux qui pourront m'aider