je bloque depuis un bon temps sur la génération d'un planning.
Mon pb est lorsque le RDV dure > 2H, des cellules se rajoutent completement a droite de mon planning.
Par exemple, si un RDV dure 4H, ça m'rajoute une cellule a droite après le vendredi sur la ligne de la 3eme et 4eme Heure.
A mon avi, ça doit etre une erreur dans mon code peut-etre le dernier IF.
Pour cet exemple, le RDV4 fixé en dur ds mon code qui doit etre le vendredi est affiché en dehors du planning (toujours après le vendredi).
Je ne comprends pas et je m'arrache les cheveux
J'ai vraiment besoin d'aide car mon stage arrive a son terme
<!-- On construit et génère le tableau -->
<table width="100%" border="6" cellpadding="5" cellspacing="2">
<tr><th width="11%">
<?
//La base de données
$jour=Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
//initialiser les RDV et leurs durées (à rien et 0 heure par défaut)
// $c représente la cellule pr l'heure de debut et $j le jour du RDV
for ($c=0; $c <10; $c++) for ($j=0; $j<=4; $j++) $RDV [$c][$j] = "Rien";
for ($c=0; $c <10; $c++) for ($j=0; $j<=4; $j++) $durées_RDV [$c][$j] = 0;
// exemples de RDV en dur
// RDV1 le lundi de 8h à 11h
$RDV [0][0] = "RDV1";
$durées_RDV [0][0] = 3;
// RDV2 le mardi de 13h à 18h
$RDV [5][1] = "RDV2";
$durées_RDV [5][1] = 5;
// RDV3 le mercredi de 9h à 12h
$RDV [1][2] = "RDV3";
$durées_RDV [1][2] = 4;
// RDV4 le vendreddi de 12h à 14h
$RDV [4][4] = "RDV4";
$durées_RDV [4][4] = 2;
//On affiche l'entête du tableau (Les jours)
for ($j=0; $j<=4; $j++) {
?>
<th>
<?
echo "$jour[$j]";
}
//Ensuite on affiche les 10 lignes correspondants aux crénneaux allant de 8H à 18H
//Les 10 créneaux peuvent être calculés automatiquement à partir de 8H
$hd = 8; //Heure de départ des créneaux d'un jour
for ($c=0; $c<10 ; $c++){
//La première colonne de la ligne contient le crénneau calculé à partir de $hd
?>
<tr>
<th>
<?
//La durée affichée d'un créneau est toujour 1 heure
$hf = $hd +1; //par exemple $hf contient 9H si $hd contient 8H
echo "$hd"."H"." à "."$hf"."H";
//Préparer le crénneau suivant
$hd += 1;
//La deuxieme partie de la ligne affichée contient les RDV des 5 jours
for ($j=0; $j<=4 ; $j++){
//Attention: ne pas créer de cellule si le créneau précédent l'a déjà consommée à cause d'une durée qui dépasse 1 heure
//$c : le n° du créneau et $j celui du jour du RDV
if (!($c>0 && $durées_RDV[$c-1][$j]>1)) {
//la céllule qui s'affiche peut consommer plusieurs lignes selon la durée du RDV planifié (c'est ROWSPAN qui s'en charge)
//BGCOLOR permet de peindre le fond si le RDV existe
//COLOR change de couleur de texte si le RDV existe
?>
<td valign="middle" align="center" width="18%" rowspan=<? echo $durées_RDV[$c][$j]; ?>
bgcolor="<? echo $durées_RDV[$c][$j]>0?"silver":""; ?>" style="color:<? echo $RDV[$c][$j]=="Rien"?"":"red"; ?>">
<?
echo $RDV[$c][$j];
}//fin if
}//fin for $j
}//fin for $c
?>
</table>