L'idée de base: remplir un tableau de 6 lignes (une par semaine) et de 7 colonnes (une par jour).
Il faut 6 lignes car, selon le mois, c'est ce qu'il faut pour caser tous les jours. Exemple Juillet 2006
Code : Tout sélectionner
Lu Ma Me Je Ve Sa Di
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6
Pour placer le premier jour dans le tableau il faut déterminer sa place dans la semaine. C-à-d quel est le numéro de son jour dans la semaine. Pour cela, tout d'abord convertir en timestamp Unix.
$stampPremierJour = mktime(0, 0, 0, 7, 1, 2006); // 1-7-2006
$jourSemPremierJour = date('w', $stampPremierJour);
Tu as maintenant le n° du jour de la semaine du premier jour du mois. Et donc sa place dans le tableau. (attention la fonction date() considère dimanche = 0)
Tu n'as plus qu'à incrémenter jusqu'au dernier jour du mois. Ici, astuce pour t'éviter le piège des années bisextiles, tu peux facilement trouver le nombre de jours de février 2006 par exemple:
$stampDernierJour = mktime(0, 0, 0, 3, 0, 2006);
$dernierJour = date("d", $stampDernierJour);
A toi maintenant.

ripat