calcul sans jours fériées
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:
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