IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

calcul sans jours fériées


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut 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 : 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

  2. #2
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut
    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

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?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>'

Discussions similaires

  1. fonction calcul jours fériés
    Par Daniel MOREAU dans le forum Développement
    Réponses: 1
    Dernier message: 25/11/2009, 09h48
  2. [XL-2003] calcul de moyenne avec des jours fériés
    Par arnest dans le forum Excel
    Réponses: 3
    Dernier message: 22/11/2009, 18h06
  3. Calcule jours fériés entre 2 dates
    Par Ouggada dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/03/2009, 13h30
  4. Réponses: 3
    Dernier message: 28/09/2007, 11h44
  5. DiffDate sans les dimanches et jours fériés.
    Par ROGER2 dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2006, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo