alphacrash
Messages postés55Date d'inscriptionjeudi 7 novembre 2002StatutMembreDernière intervention17 août 2012
-
15 juil. 2010 à 19:15
Seraphino
Messages postés29Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 5 octobre 2010
-
5 oct. 2010 à 03:25
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
@require_once("../config.inc.php");
$date=date('Y-m-d');
$idProduit=0;
if(isset($_REQUEST['idProduit'])){
$idProduit=$_REQUEST['idProduit'];
}
echo $idProduit;
?>
<script src="../scripts/jquery.js" type="text/javascript" charset="utf-8"></script>
<?php
function getFournisseurInfosServices($idFournisseur){
$queryFournisseurInfosServices=mysql_query("SELECT * FROM infosfournisseurservice WHERE idFournisseur=".$idFournisseur."") or die(mysql_error());
$fournisseurInfosServices=mysql_fetch_assoc($queryFournisseurInfosServices);
return $fournisseurInfosServices;
}
$fournisseurService=getFournisseurInfosServices(1);
$totalWidth=500;//Taille du div
$debutJournee=$fournisseurService['heureDebut'];
$finJournee=$fournisseurService['heureFin'];
list($heure, $minutes) = preg_split("/:/", $debutJournee);
list($heureFinJournee, $minutesFinJournee) = preg_split("/:/", $finJournee);
$totalHours=$heureFinJournee-$heure;//Heures pour la journée
function calculRDVWidth($duree,$totalWidth,$totalHours){
$width=(($duree)*$totalWidth)/($totalHours*60);
return $width;
}
function calculPositionRDV($debutJournee,$finJournee,$dureeMinutes,$totalHours,$heureRdv,$totalWidth){
$initLeftPx=0;//=DebutJournee 9h
$uneHeureLeftPx=$totalWidth/(($totalHours));//px
$uneMinuteLeftPx=$totalWidth/(($totalHours)*60);//px
list($heure, $minutes) = preg_split("/:/", $heureRdv);
list($heureDebutJournee, $minutesDebutJournee) = preg_split("/:/", $debutJournee);
$nbHeuresParRapportDebut=$heure-$heureDebutJournee;
$nbMinutesParRapportDebut=$minutes-$minutesDebutJournee;
$leftPosition=($nbHeuresParRapportDebut*$uneHeureLeftPx)+( $nbMinutesParRapportDebut*$uneMinuteLeftPx);
return $leftPosition;
}
?>
<?php
$queryGetRDVServices=mysql_query("SELECT * FROM salariesRDVServices S,tempsproduit T WHERE date=CURDATE() AND S.idProduit=T.idProduit") or die(mysql_error());
while($rdv=mysql_fetch_array($queryGetRDVServices)){
?>
px;width:<?php echo round(calculRDVWidth($rdv['temps'],$totalWidth,$totalHours)); ?>px;height:60px;background:gray;text-align:center;">
<?php
echo "left:".round(calculPositionRDV($debutJournee,$finJournee,$rdv['temps'],$totalHours,$rdv['heure'],$totalWidth))."
";
echo "width:".round(calculRDVWidth($rdv['heure'],$totalWidth,$totalHours))."
";
?>
<?php
}
?>
<?php echo $debutJournee; ?>
<?php echo $finJournee; ?>
<form method="POST" action="">
<select id="produit" name="idProduit">
<?php
$queryGetProduitsFournisseurServices=mysql_query("
SELECT * FROM
produits P,tempsproduit T
WHERE
P.idFournisseur=1
AND
P.idProduit=T.idProduit
") or die(mysql_error());
while($produit=mysql_fetch_array($queryGetProduitsFournisseurServices)){
?><option value="<?php echo $produit['idProduit']; ?>" <?php if($idProduit==$produit['idProduit']){echo " selected";} ?>><?php echo $produit['designation']; ?></option><?php
}
?>
</select>
</form>
Pour produit 1 selectioné qui dure <?php echo getTempsProduit($idProduit); ?>min:
<?php
function crenauLibre($heureDebut,$heureFin){
$queryCrenauxLibres=mysql_query("SELECT IF(
(('".$heureFin."' <= S.heure AND '".$heureDebut."' <= SEC_TO_TIME( TIME_TO_SEC( S.heure ) + ( T.temps *60 ) ))
OR
(('".$heureDebut."' >= SEC_TO_TIME( TIME_TO_SEC( S.heure ) + ( T.temps *60 ) )))
) , 'oui', 'non') AS Libre, S.date, S.heure, T.temps, SEC_TO_TIME( TIME_TO_SEC( S.heure ) + ( T.temps *60 ) )
FROM salariesrdvservices S, tempsproduit T
WHERE S.idProduit = T.idProduit
ORDER BY S.heure
LIMIT 0 , 30
") or die(mysql_error());
$res=mysql_fetch_assoc($queryCrenauxLibres);
return $res['Libre'];
}
$queryCrenauxLibres=mysql_query("SELECT * FROM salariesRDVServices S,tempsproduit T WHERE date=CURDATE() AND S.idProduit=T.idProduit AND T.idProduit=".$idProduit."") or die(mysql_error());
while($crenauxReserves=mysql_fetch_array($queryCrenauxLibres)){
$dateHeureDebut =strtotime($crenauxReserves['date']." ".$crenauxReserves['heure']);
$dateHeureFin= date("H:i:s", $dateHeureDebut+($crenauxReserves['temps']*60));
}
function getTempsProduit($idProduit){
$queryTempsProduit=mysql_query("SELECT temps FROM tempsproduit WHERE idProduit=".$idProduit." ") or die(mysql_error());
$res=mysql_fetch_assoc($queryTempsProduit);
return $res['temps'];
}
?>
<!--<select id="creneauxDispo">//-->
<?php
$tps=strtotime($date." ".$debutJournee);
$oldDate="";
while($tps<strtotime($date." ".$finJournee)){
$oldDate=date("H:i:s",$tps);
//echo date("H:i:s",$tps);
$tps+=getTempsProduit($idProduit)*60;
//echo "-->".date("H:i:s",$tps);
$newDate=date("H:i:s",$tps);
//if(crenauLibre($oldDate,$newDate)!="oui"){
//echo "<option value="".$oldDate."">".$oldDate."-->".$newDate."-".crenauLibre($oldDate,$newDate)."</option>";
// }
echo "
";
print_r(crenauLibre($oldDate,$newDate));
}
?>
<!--</select>//-->
<script>
$(document).ready(function() {
$("#creneauxDispo").change(function () {
alert($('#creneauxDispo :selected').val());
});
});
</script>