Ciao supersavio, dopo un pò di brainstorming sono arrivata anche io ad una conclusione, uguale alla tua ma al contrario, ovvero: quando entro nel loop che stampa i giorni, guardo che giorno è il primo giorno del mese (se un lunedi, martedi, ecc). Dato che la mia griglia parte da un lunedi, creo dei div con visibility:hidden (di modo che l'html risulti cmq stampato nella pagina, e quindi crei lo spazio bianco) a seconda di quanti giorni mancano alla prima domenica.
Posto il codice:
codice:
//Let's build the calendar
for($i=1;$i<=$MonthsLeft;$i++) {
$timestamp = mktime(0,0,0,$cMonth,1,$cYear);
$maxday = date("t",$timestamp);
echo "<div style='overflow:hidden;'>";
// Print the days
for($Count=1;$Count<=$maxday;$Count++) {
if($DayOfWeek == "S") {
$szBack = "#DE0032";
} else {
$szBack = "#AAAAAA";
}
//Current Day
$Day = $cYear . "-" . (strlen($cMonth) == 1 ? "0". $cMonth : $cMonth) . "-" . (strlen($Count) == 1 ? "0". $Count : $Count);
$DayOfWeek = date("D",strtotime($Day));
switch($DayOfWeek) {
case "Sat":$szBack = "#FF6600"; break;
case "Sun":$szBack = "#FF6600"; break;
default: $szBack = "#AAAAAA";
}
if($Count == 1) {
switch($DayOfWeek) {
case "Mon": $szLoopTimes = 0; break;
case "Tue": $szLoopTimes = 1; break;
case "Wed": $szLoopTimes = 2; break;
case "Thu": $szLoopTimes = 3; break;
case "Fri": $szLoopTimes = 4; break;
case "Sat": $szLoopTimes = 5; break;
case "Sun": $szLoopTimes = 6; break;
}
for($DayCount=0;$DayCount<$szLoopTimes;$DayCount++) {
//echo $DayOfWeek . " - " . $szLoopTimes . " | ";
echo "<div style='float:left;width:15px;height:15px;background:#AAAAAA;margin:2px;font-size:0.5em;visibility:hidden;'></div>\n";
}
}
echo "<div style='float:left;width:15px;height:15px;background:$szBack;margin:2px;font-size:0.5em;'>" . $Count . "</div>";
}
echo "</div>";
$cMonth++;
}
In ogni caso, grazie 1000 per l'aiuto!
Ciao
Laura