begin process at 2012 05 30 13:11:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Création d'un planning de RDV pour la semaine


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Création d'un planning de RDV pour la semaine

jeudi 15 juillet 2010 à 19:15:43 | Création d'un planning de RDV pour la semaine

alphacrash

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:
Code PHP :
<?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;
}



?>

<div style="width:500px;height:60px;background:green;position:relative;">
<?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)){

?>
<div class="rdv" style="z-index:1;position:absolute;top:0;left:<?php echo round(calculPositionRDV($debutJournee,$finJournee,$rdv['temps'],$totalHours,$rdv['heure'],$totalWidth)); ?>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))."<br>";
 echo "width:".round(calculRDVWidth($rdv['heure'],$totalWidth,$totalHours))."<br>";


?>
</div>

<?php
}
?>

</div>
<div style="width:500px;height:30px;">
<div  style="float:left;width:100px;text-align:left;"><?php echo $debutJournee; ?></div>
<div  style="float:right;width:100px;text-align:right;"><?php echo $finJournee; ?></div>
</div>

<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>
<input type="submit" />
</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 "<br />";
	print_r(crenauLibre($oldDate,$newDate)); 
		
}




?>
<!--</select>//-->

<script>
$(document).ready(function() {
			$("#creneauxDispo").change(function () { 
			
			alert($('#creneauxDispo :selected').val());
			 
		});
	});
</script>
<br /><br />


Merci d'avance !
mardi 5 octobre 2010 à 03:25:18 | Re : Création d'un planning de RDV pour la semaine

Seraphino

Je cherche également à faire la même chose si quelqu'un à la soluce, je pense qu'elle aidera plusieurs personnes ;)


Cette discussion est classée dans : mysql, temps, heure, oui, idproduit


Répondre à ce message

Sujets en rapport avec ce message

MySQL DATETIME [ par eax ] saluty'a qqun qui pourrait me dire comment faire pour rechercher des données dans une table MySQL:j'ai un champ `cree_le` qui est un timestamp (DATETI suppression ds mysql à une heure précise [ par citizenh ] Bonjour,Est_il possible de déclencher une action sur une base mysql tous les jours à 3 heures du matinMerci Droit d'accès à un répertoire en fonction de l'heure [ par jack ] Bonjour à tousC'est mon premier post en dehors de vbfrance, soyez indulgents, je connais pas grand chose au php !La question : Est-il pensable de modi Classement avec mysql [ par dcbastien ] En imaginant une table mysql contenant ces information:id      idNom         Nom         Temps1     &nb Problématique de requete mysql [ par yobogs ] Bonjour, Je me permet de solliciter le forum car j'ai un problème par rapport à une requete et j'aimerai savoir si vous avez une idée comme la resoudr Probleme SQL [ par LaTatadu91 ] Bonjour voila j ai un probleme de requetel erreur de retour est: Unknown column 'dupond' in 'field list'ma base est constituée comme ceci:<table _ba bouton radio preselectionnée par value [ par mouness ] Bonjour a tous je debute en php et je voudrais savoir si quelqu'un ne serait pas comment preselectionnée un bouton radioje m'expliquej'ai un bout de c Compteur de visite [ par Jay77270 ] Bonjour,Voila je débute dans le script php mysql et j'aimerai vivement intégré un compteur de visite ah mon site j'ai un code php mais en l'executant recupérer valeur [ par elodieb ] bonjour à tous, j'ai créé un formulaire qui affiche tous les films sur la page et je veux quand je clique sur le bouton modifier qu'il recupere les do Mysql -- Order by [ par BirD ] Hello tout le monde, c'est toujours a propos de mon forum, je désir afficher les messsages du plus vieux au plus récent. Dans ma table, j'ai un champ


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales