[PHP] Calage de semaines par rapport à des mois

Bonjour tout le monde,

Je viens ici vous exposer mon problème, je travaille actuellement sur un outil de planning et dont il est possible de disposer d’un affichage graphique de celui-ci.
Plusieurs types de vue sont dispos : Semaine, Mois, Année. Pour les vues Semaine et Année, pas de souci ça marche au poil. Là où j’ai un souci, c’est sur la vue Mois.

En effet, l’affichage doit présenter à l’utilisateur une vue des semaines sur une période de 3 mois.
En gros, ça donnerait un truc du genre (vraiment du genre):

Mon problème réside dans le calage des semaines par rapport aux mois. Comme les semaines ne commencent ni ne finissent forcément en début ou fin de mois, il faut que j’affiche toutes les semaines correspondant à ce delta de 3 mois, et que la taille de chaque semaine dépende du nombre de jours présent dans cette période de temps.

Le code ressemble à ça actuellement :

[codebox]
$HTMLPlanningHead .= ‹  ›.$previousMonth.’ (’.($year > $previous_year ? $previous_year : $year).’)’;

/* Current Month */
$HTMLPlanningHead .= ‹  ›.$month.’ (’.$year.’)’;

/* Current Month + 1 month */
$HTMLPlanningHead .= ‹  ›.$nextMonth.’ (’.($year < $next_year ? $next_year : $year).’)’;
$HTMLPlanningHead .= ‹  ›;

$HTMLPlanningHead .= «  »;
$HTMLPlanningHead .= " ";

$HTMLPlanningHead .= ‹  ›;
$HTMLPlanningHead .= ‹  ›;
$nbWeeks = $lastWeekOfTheLastMonth - $firstWeekOfTheFirstMonth;

for ($i = 0; $i <= $nbWeeks; $i++)
{
$nbDays = howManyDaysofThisWeekInThisMonth(($firstWeekOfTheFirstMonth + $i), $year, array($previousMonth, $month, $nextMonth));

$HTMLPlanningHead .= '<span style="text-align: center; display: inline; overflow: hidden; border-right: 1px solid gray;"';
    $HTMLPlanningHead .= 'margin-left: '. (($nbDays*((100/$nbWeeks)/7))/1.3) .'%;>';
$HTMLPlanningHead .= 'S'.($firstWeekOfTheFirstMonth + $i);
$HTMLPlanningHead .= '</span>';

}
$HTMLPlanningHead .= «  »;
[/codebox]

(le « 1.3 » était un test pour arriver désespérément à caler ces semaines. L’utilisation de n’est peut-être pas la meilleure idée, mais bon quand on fait des tests…)

Le précédent développeur n’ayant eu qu’à concevoir l’outil en vue Semaine a choisi la solution d’utiliser un table pour l’affichage, mais je ne peux pas utiliser de cellule pour afficher les semaines, du fait de ce problème de calage.

Je m’en remets donc à la zone pour essayer de trouver la solution miracle :smiley:
N’hésitez pas si vous voyez des horreurs dans mon code ou si plus de précisions sont nécessaires.

Merci !