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
Salut !
Merci de ta réponse, j'ai remplaçé le count du tableau et là j'ai le bon fonctionnement:
[php]<?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>
[/php]
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