Une fonction php.

deldiaze -  
 deldiaze -
Bonjour je voudrais savoir si quelqu'un peut m'aider à faire une fonction qui permettre de calculer à partir d'une date rentrée à l'aide d'un formulaire, une date de sortie. Sachant que la date de sortie sera la date d'entrée + 30 jours ouvrables.Donc voilà en gros mon probleme j'espere que vous pourrez me venir en aide.

MERCI

4 réponses

  1. thunder413 Messages postés 169 Statut Membre 23
     
    salut j'espere que ceci va t'aider si
    <?php
    function calculdate($dateStr) {
    
    //$dateStr doit etre sous la forme dd/mm/aaaa
    
    // On recupere la le jour mois e anne separe par "/"
    list($j,$m,$a) = explode('/',$dateStr);
    //On recupere le timestamp a cette date mais a 0h 0min 0sec
    $timestamp = mktime(0,0,0,$m,$j,$a);
    
    //Comme on doit travailler avec du timestamp qui est en seconde ce qui donne 1 jour = 86400 sec
    $jour = 86400;
    
    //ce compteur servira pour dire si on'a atteint 30 jours ouvrable
    $cpJours = 0;
    
    // on fait une boucle infini mais qu'on arretra des qu'on arrive a 30jours ouvrivrable
    
    while (true) {
          
          //on ajoute un jour sur le timestamp recu par le parametre   
          $timestamp = $timestamp + $jour;
    	  // on test si le timestamp tombre sur un jour ouvrable ou non
    	  // si oui on comptabilise a l'aide de cpJours en l'incrementant
    	  // sinon on passe 
    	  // date("w") retour un nombre compris entre 0 et 6 (0=dimanche;5=samedi)
    	  
    	  //si le jour a ce timestamp n'est pas un dimanche ni un samedi 
    	  // on comptabilise
    	  if (date("w",$timestamp)!= 0 && date("w",$timestamp) != 5 ) {
    	   
    		 $cpJours++;
    
    		 //On teste maintenant si on'a atteint 30 jours ouvrable
    		 if ($cpJours == 30) {
    		     
    			 //on a attein 30 jours et c'est le but on sors de la boucle
    			 break;
    		 }
    	  }
    }
    // a la sortie de la boucle on le timestamp de 30 jours ouvrable
    return "d'ici 30 jours ouvrable la date sera ".date('d/m/Y',$timestamp); 
    }
    echo calculdate("08/05/2010");
    ?>
    
    0
  2. deldiaze
     
    bonjour merci pour votre aide , au fait à la derniere ligne là où vous faites "echo calculdate("08/05/2010")" la date ne doit pas etre fixe donc j'ai modifier un peu et j'ai mis comme argument de la fonction calculdate "$datestr" mais là aussi j'ai une fausse date du style ../../2007 , avez vous une idee du beug?

    merci
    0
  3. thunder413 Messages postés 169 Statut Membre 23
     
    le echo que j'ai mis c'etait a titre d'exemple et $dateSrt n'est conu que de la fonction si tu veut lui passer un parametre tu fait par exemple
     //je suppose que t'recupere sa dans un formulaire parexemple 
    $madate = "12/05/2020"; 
    
    echo calculdate($madate); 
    
    


    au fait j'ai tester le code chez moi et ca marche
    0
  4. deldiaze
     
    c'est nice !!! probleme resolu et merci encore.
    -1