Calcul date et jours fériés

tigre198 Messages postés 55 Statut Membre -  
tigre198 Messages postés 55 Statut Membre -
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

<?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
A voir également:

1 réponse

tigre198 Messages postés 55 Statut Membre 9
 
j'ai fais autre boucle qui parcours les lignes pour trouver jours fériées
mais beug si j'esaie mettre ça dans les autres boucles
la seulement derniere semaine se change de résultat . c'est a dire si j'ai 2 jours feriées
derniere ligne de 4 jours devienne 2

<?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;
// 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'];

$jour2 = $line['date_fin'];

for( $jour = $jourDebut; $jour <= $jourFin; $jour++ )

{

if( $jourSemaine > 1 AND $jourSemaine <= 7 )

$nbrJours[ $semaine+1 ]++;

$jourSemaine++;

if( $jourSemaine > 7 ) {$semaine++; $jourSemaine = 1;}

}
for ($i=$jour1;$i<$jour2;$i++)
{

$individu = array("$i");

foreach($individu as $cle=>$valeur)

{
if ($valeur!='2008-08-01' and $valeur!='2008-08-08' and $valeur!='2008-05-01' and $valeur!='2008-05-08' )
{

echo $valeur;
}
else
{
$nbrJours[ $semaine+1 ]--;
}
}

}
}
// affichage résultat
echo '<pre>'; print_r( $nbrJours ); echo '</pre>';
?>
-1