Création d'un planning pour la semaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Création d'un planning pour la semaine

Re: Création d'un planning pour la semaine

par skatefouRep » 16 juil. 2010, 10:54

Oui, je sais mais là ce n'est pas cela qui fait "couiller"...
Je pense qu'il manque une condition ou autre...:-(

Re: Création d'un planning pour la semaine

par telnes » 16 juil. 2010, 10:35

hello

pour info mettre un count dans un for fait recalculer le count a chaque itération. il vaut mieux faire le count avant le for.

++

Re: Création d'un planning pour la semaine

par skatefouRep » 16 juil. 2010, 10:33

Salut !
Merci de ta réponse, j'ai remplaçé le count du tableau et là j'ai le bon fonctionnement:
<?php

$rdvs = array( array(  '08:00:00','08:40:00'
					   
                    ),
              
				array(
                      '09:20:00',
                     '10:00:00'
					  
                    )
					,
					array(
                      '10:00:00',
                     '10:40:00'
					  
                    ),
						array(
                      '11:20:00',
                     '12:00:00'
					  
                    )
			
             );
			 
			 
	

function testHours($heureDebut,$heureFin,$rdv1,$rdv2){



	
	 $result=array();
	 
	
	
	 $debutRdv= Date('H:i:s',(strtotime(date('Y-m-d')." ".$heureDebut)));
	 $finRdv= Date('H:i:s',(strtotime(date('Y-m-d')." ".$heureFin)));
	

	
	if((($debutRdv>=$rdv1)&&($finRdv<=$rdv2))){
	 
	// echo $debutRdv.">=".$rdv1." && ".$finRdv."<=".$rdv2."<br>";
 //echo $heureDebut."-->".$heureFin." non<br>";
	
	 return false;
	 }else{
	//  echo $debutRdv.">=".$rdv1." && ".$finRdv."<=".$rdv2."<br>";
 //echo $heureDebut."-->".$heureFin." oui<br>";
	return true;
	 }

	
	
}
	


$tps=strtotime(date('Y-m-d')." 08:00:00");
$NothourOKArray=array();
$hourArray=array();
$oldDate="";

while($tps<strtotime(date('Y-m-d')." 12:00:00")){
	$oldDate=date("H:i:s",$tps);
	//echo date("H:i:s",$tps);
	$tps+=40*60;//40minutes
	//echo "-->".date("H:i:s",$tps);
	$newDate=date("H:i:s",$tps);
		
			  for($i=0;$i<count($rdvs);$i++){
	 $debutRDVBase=Date('H:i:s',(strtotime(date('Y-m-d')." ".$rdvs[$i][0])));
	 $finRDVBase=Date('H:i:s',(strtotime(date('Y-m-d')." ".$rdvs[$i][1])));
	if(!testHours($oldDate,$newDate, $debutRDVBase, $finRDVBase)){
	//echo $oldDate."-->".$newDate."<br>";
	array_push($NothourOKArray,$oldDate);
	}
	
	
	 //echo $debutRdv.">=".$debutRDVBase."   &&   ".$finRdv."<=".$finRDVBase."<br><br>";
	}
	array_push($hourArray,$oldDate);

		//if(testHours($oldDate,$newDate))
		//{
		//echo $oldDate."-->".$newDate."<br />";
		//}
}
		
	
?>
<select>
<?php for($j=0;$j<count($hourArray);$j++) 
if(!in_array($hourArray[$j],$NothourOKArray)){

echo "<option>".$hourArray[$j]."-->".Date('H:i:s',strtotime(date('Y-m-d')." "."".$hourArray[$j]."")+2400)."</option>";
}
?>
</select>
Problème, pour le moment dans ce code, le temps est fixé à 40 minutes, or, ce temps est variable, ce qui fait que des rendez-vous peuvent durer 15min ou 25min ou encore 40min et donc pour trouver ces plages si le temps est variable, je galère :-(...
Je pense qu'il me manque un IF ou quelque chose comme ca

Re: Création d'un planning pour la semaine

par Ultim4T0m » 16 juil. 2010, 10:21

Salut,

Et en remplaçant :
for($i=0;$i<count($rdvs[0]);$i++){
Par :
for($i=0;$i<count($rdvs);$i++){

?

Création d'un planning pour la semaine

par skatefou » 15 juil. 2010, 19:14

Salut à tous !

Je butte depuis 3 jours sur un problème, qui je suis sur sera assez vite résolu, du moins je l'espère.
Je souhaite faire un planning pour gérer des rendez-vous dans la semaine.

Les données seront stockées en base mysql mais pour le moment je simule avec des tableaux.
Le code ci-dessous à pour but de simuler le fonctionnement.
Le problème est que j'ai du mal à sortir les plages horaires pour lesquelles il n'y a pas de rendez-vous, en fait, mon code ne m'en sorte qu'une, par exemple:
08:00:00-->08:40:00 non
08:40:00-->09:20:00 oui
09:20:00-->10:00:00 oui
10:00:00-->10:40:00 oui
10:40:00-->11:20:00 oui
11:20:00-->12:00:00 oui
Alors qu'il devrait me sortir:
08:00:00-->08:40:00 non
08:40:00-->09:20:00 oui
09:20:00-->10:00:00 non
10:00:00-->10:40:00 oui
10:40:00-->11:20:00 oui
11:20:00-->12:00:00 oui

J'ai vraiment du mal à m'en sortir donc si quelqu'un a l'envie de m'aider, voici le code:
<?php

function testHours($heureDebut,$heureFin){

$rdvs = array( array(  'heureDebut' => '08:00:00',
                       'heureFin' =>'08:40:00'
					   
                    ),
              
				array(
                      'heureDebut' => '09:20:00',
                      'heureFin' => '10:00:00'
					  
                    )
					
			
             );

	
	 $result=array();
	 
	 for($i=0;$i<count($rdvs[0]);$i++){
	
	 $debutRdv= Date('H:i:s',(strtotime(date('Y-m-d')." ".$heureDebut)));
	 $finRdv= Date('H:i:s',(strtotime(date('Y-m-d')." ".$heureFin)));
	
	 
	 $debutRDVBase=Date('H:i:s',(strtotime(date('Y-m-d')." ".$rdvs[$i]['heureDebut'])));
	 $finRDVBase=Date('H:i:s',(strtotime(date('Y-m-d')." ".$rdvs[$i]['heureFin'])));
	
	 //echo $debutRdv.">=".$debutRDVBase."   &&   ".$finRdv."<=".$finRDVBase."<br><br>";
	
	
	if(($debutRdv>=$debutRDVBase)&&($finRdv<=$finRDVBase)){
	 
	 
	 echo $heureDebut."-->".$heureFin." non<br>";
	
	 return false;
	 }else{
 echo $heureDebut."-->".$heureFin." oui<br>";
	return true;
	 }

	}
	
}
	


$tps=strtotime(date('Y-m-d')." 08:00:00");

$oldDate="";
while($tps<strtotime(date('Y-m-d')." 12:00:00")){
	$oldDate=date("H:i:s",$tps);
	//echo date("H:i:s",$tps);
	$tps+=40*60;//40minutes
	//echo "-->".date("H:i:s",$tps);
	$newDate=date("H:i:s",$tps);
		
		if(testHours($oldDate,$newDate))
		{
		//echo $oldDate."-->".$newDate."<br />";
		}
}		
	
?>
Merci d'avance !!!