par
Cyrano » 05 juin 2005, 01:30
Ok,
le script de base tel que présenté ne tient pas compte du calendrier, c'est peut-être bien un problème tout comme on peut le contourner.
On va donc se limiter dans l'immédiat sur la semaine. Nous avons besoin de 5 paramètres. Notons aussi que le terme de rendez-vous est innapproprié et peut aussi représenter une période d'absence.
- Le jour de la semaine pour le rendez-vous;
- L'heure à laquelle débute le rendez-vous (ou l'absence)
- L'intitulé du rendez-vous;
- La durée en heures du rendez-vous;
- La sorte de rendez-vous: présent ou absence
Si je regarde la première requête, nous avons:
- l'intitulé;
- l'heure du début;
- l'heure de fin;
- La date;
À partir de la date, nous pouvons déterminer le jour de la semaine qui déterminera $x;
L'intitulé se retrouve dans $RDV[$x][$y][0] = intitulé;
Avec l'heure de début, nous déterminons $RDV[$x][$y][1] = fin - début
Enfin, s'il s'agit d'un rendez-vous, $RDV[$x][$y][2] = 1, s'il s'agit d'une absence, $RDV[$x][$y][2] = 0
Nous n'avons pas besoin d'incrémenter quoique ce soit partant du principe que deux rendez-vous ne se chevauchent pas lorsqu'ils sont enregistrés.
On peut donc modifier un peu ta construction comme ceci pour les rendez-vous:
/* Sur le schéma de la requête suivante, on considère que avoir.date est au format "yyyy-mm-dd" et l'heure au format hh:mn */
$query2 = 'SELECT libelle_rdv as lib, heure_deb, heure_fin, avoir.date
FROM rendezvous, avoir
WHERE avoir.code_rdv = rendezvous.code_rdv
AND code_util="'.$vnom.'"
AND date="'.$datentete.'"';
$result2 = mysql_query ($query2) or die (" La requête pour la recherche des rendez-vous a échoué ");
while ($row_Resul2=mysql_fetch_assoc($result2))
{
/* À partir de la date, on va déterminer le jour de la semaine */
$annee = substr($row_Resul2['date'],0,4);
$mois = substr($row_Resul2, 4, 2);
$jour = substr($row_Resul2, 7, 2);
/* On détermine le jour de la semaine au format numérique */
$joursemaine = date("w", mktime(0,0,0,$mois, $jour, $annee));
/* On modifie le jour en mettant le lundi à 0 à la place du dimanche */
$x = ($joursemaine = 0) ? 6 : ($joursemaine-1);
/* On établit l'heure du début du rendez-vous */
$heure_d = substr($row_Resul2['heure_deb'],0,2);
$y = $heure_d - 8 ;
/* On établit le libellé du rendez-vous */
$lib = $row_Resul2['lib'];
/* On établit la durée du rendez-vous */
$heure_f = substr($row_Resul2['heure_fin'],0,2);
$dur = $heure_f - $heure_d;
/* Ce n'est pas une absence, on met l'état à 1 */
$etat = 1;
/* On construit le tableau $RDV */
$RDV[$x][$y] = array($lib, $dur, $etat);
}
Il te reste à faire la même chose pour les absences en mettant le dernier paramètre à 0 au lieu de 1 puisque ce sont les absences.