Bonjour

je voudrai afficher une periode dans un tableau html représentant les quinzaine de chaque mois de juin à septembre. Je tire mes dates d'une serie de fichiers xml.
j'utilise la fonction mktime pour construire des "timestamp".

je veut colorer la case dans mon tableau si la quinzaine figure dans l'intervalle entre mes dates de début et dates de fin.

mais ca ne marche pas du tout comme je veut. le seul code qui semble marcher est le suivant.



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
 
foreach ($data as $value) {
 
		   $debut = mktime(0, 0, 0,$value['MOIS_DEBUT'], $value['JOUR_DEBUT'], $value['ANNEE']);
 
		   $fin = mktime(0, 0, 0,$value['MOIS_FIN'], $value['JOUR_FIN'], $value['ANNEE']);
 
		   $g[$i]['periode'] = 'du ' . $value['JOUR_DEBUT']. '/'. $value['MOIS_DEBUT'].'/2009 au '. $value['JOUR_FIN']. '/'. $value['MOIS_FIN'].'/2009';
                    echo "debut: " . $debut . "fin: " . $fin. '     ';
 
		   for ($j = 6; $j <=10; $j++) {
                        //debut quinzaine
		        $debut_courant = mktime(0, 0, 0, $j, 1, 2009);
                        //fin quinzaine
			$fin_courant = mktime(0, 0, 0,$j, 15, 2009);
 
			if(($debut_courant >= $debut) &&  ($fin_courant <= $fin)) {
 
				$g[$i][$j.'15'] = "<td class='un'>1</td>";
 
			}
 
			else {
 
				$g[$i][$j.'15'] = "<td class='zero'>0</td>";
 
			}
                        //debut quinzaine
			$debut_courant = mktime(0, 0, 0, $j, 16, 2009);
                        //fin quinzaine
			$fin_courant = mktime(0, 0, 0, $j, $mois[$j],2009);
 
			if(($debut_courant >= $debut) &&  ($fin_courant <= $fin)) {
 
				$g[$i][$j.'30'] = "<td class='un'>1</td>";
 
			}
 
			else {
 
				$g[$i][$j.'30'] = "<td class='zero'>0</td>";
 
			}
 
		    }
 
		    $i++;
 
 
 
		}
mais il ne marche que si la date tombe sur le debut ou fin de quinzaine. Si la date se trouve entre la quinzaine (exemple 26/06/2009) rien n'est affiché.
si j'inverse mes comparaisons (ce qui samblerai plus logique)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
if(($debut_courant <= $debut) &&  ($fin_courant <= $fin)) {
 
				$g[$i][$j.'30'] = "<td class='un'>1</td>";
 
			}
 
			else {
 
				$g[$i][$j.'30'] = "<td class='zero'>0</td>";
 
			}
l'affichage ne correspond a rien.
j'ai beau retourner le code dans tous les sens je suis perdu.

pouvez vous m'aider
Merci
Claude