Bonjour,

j'ai problème pour ne pas compter des jours comme par exemple 8 mai ou 1 mai.

en effet ce script parcours table et calcul nombre des jours en une semaine mais j'ai besoin de pas compter des jours feriées

j'ai table table_test ou il ya 1 ligne :


date_debut=2008-05-01
date_fin : 2008-05-29

donc resultat c'est
semaine 17 =3
semaine 18=6
semaine 18=6
.....
bien sur je compte pas dimanche a l'aide de fonction sql (WEEK( Date_debut,2))
mais je dois aussi pas compter jours fériées que je dois paramétré et aussiles integré dans boucle for d'ou par exemple si je dois arriver a afficher semaine 17 =2 au lie de 3 vu que je calcule pas 1 mai.
reste ma table peux contenir 1000 lignes.
voiçi le script ou j'utilise a la finc print_r

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php 
$host = 'localhost'; 
$user = 'root'; 
$bdd = 'cm'; 
 
mysql_connect($host, $user,'') or die("erreur de connexion au serveur"); 
 
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees"); 
$annee = 2008; 
// date (mysql type DATE) lundi de cette semaine --> $dateLundi 
 
// date (mysql type DATE) vendredi de cette semaine --> $dateVendredi 
 
// recherche en base des congés chevauchant cette semain 
$query = "SELECT " 
. "WEEK( Date_debut,2) AS wDebut,DAYOFWEEK( Date_debut ) AS wsDebut," 
. "TO_DAYS( Date_debut) AS dDebut,TO_DAYS( Date_fin ) AS dFin, date_debut, date_fin" 
. " FROM tab_test" 
. " WHERE YEAR(Date_debut) =" . $annee 
. " OR YEAR(Date_fin) =" . $annee ; 
//echo '<br>...' . $query; 
 
$result = mysql_query( $query ) or die( mysql_error() ); 
 
// réservationtableau pour les nbre de jours par semaine 
for( $i=0; $i<53; $i++ ) 
$nbrJours[ ] = 0; 
//$nbrJours1[]=0; 
// boucle sur les enregistrements de la table 
while( $line = mysql_fetch_array( $result ) ) 
{ 
$semaine = $line['wDebut']; 
 
$jourSemaine = $line['wsDebut']; // dimanche = 1 
 
$jourDebut = $line['dDebut']; 
 
$jourFin = $line['dFin']; 
 
$jour1 = $line['date_debut']; // date début congés 
 
$jour2 = $line['date_fin']; // date fin congés 
 
for( $jour = $jourDebut; $jour <= $jourFin; $jour++ ) 
 
{ 
 
if( $jourSemaine > 1 AND $jourSemaine <= 7 ) 
 
$nbrJours[ $semaine]++; 
 
$jourSemaine++; 
 
if( $jourSemaine > 7 ) 
 
{ 
 
$semaine++; $jourSemaine = 1; 
 
} 
 
} 
 
} 
 
// affichage résultat 
echo '<pre>'; print_r( $nbrJours ); echo '</pre>'; 
 
?>
merçi d'avance