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
j'ai pourtant des lignes prises en compte, alors que
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 != "")) '; }
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
Partager