Intervalle entre 2 dates sans les week end

Résolu/Fermé
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013 - 15 mars 2012 à 14:22
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013 - 16 mars 2012 à 13:39
Bonjour,


Je suis actuellement en train de faire un logiciel de gestion de congés avec html et PHP.
Mon problème est que je dois calculer le ombre de jours entre 2 dates (jusque la c'est bon) mais j'aimerai que les weekends, et certain jour ne soient pas pris en compte.

Je galère à fond... Comment faire?

1 réponse

maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
15 mars 2012 à 15:23
Bonjour,

Pourrais- tu expliquer un peu plus comment tu veux procéder pour enregistrer des congés

par exemple : 10 jours de congés à partir d'une date (et donc il ne faut pas compter le week-end)

autre exemple date de début et date de fin ... (le nombre de congés sera la différence - les jours des week end)

à quoi ressemble ta table en base de données

et que fera-tu de ces infos ? (si il y a des traitement particuliers à faire dessus.

Toutes ces infos permettront de t'orienter vers la solution la plus adéquate
0
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013
15 mars 2012 à 15:52
J'enregistre les donnée dans une base sous cette forme:

Numéro de congés | Numéro de l'employé | DateDébut | DateFin | Nombre de Jours | Validation

Exemple: Du 01-01-2012 au 28-02-2012 ça me donne 59 jours

Chaque employé dispose d'un certain nombre de jours de congés, donc grâce à un trigger je mettrai à jour ce nombre.
0
maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 15/03/2012 à 18:24
<?php 
  
 $date_debut = '01/01/2012'; 
 $date_fin = '28/02/2012'; 
 list($dd,$md,$yd) = explode('/',$date_debut); 
 list($df,$mf,$yf) = explode('/',$date_fin); 
  
 $timstamp_debut = mktime(0,0,0,$md,$dd,$yd); 
 $timstamp_fin = mktime(0,0,0,$mf,$df,$yf); 
  
 $conges = 0; 
 $jours = 0; 
 // 86400 -> nombre de seconde par jour 
 for($i = $timstamp_debut; $i <= $timstamp_fin; $i+= 86400){ 
  if(in_array(date('w', $i) , array(1,2,3,4,5))){ 
   $conges++; 
  } 
  $jours++; 
 } 
 echo $conges.' sur '.$jours; 

?>


test ce bout de code
0
r.mahery Messages postés 19 Date d'inscription lundi 30 mai 2011 Statut Membre Dernière intervention 20 juin 2013
16 mars 2012 à 13:39
Ce code fonctionne correctement, il ne prend pas en compte les weekends. Il faut vraiment que j'apprenne la gestion des dates sur PHP. Je vais essayer de comprendre ce code ^^. Reste encore la prise en compte des jours fériés --'.
Je te remercie pour ton aide. ;)
0