Ecco qui


<?php

function print_calendar($month="",$year="")
{

// impostiamo la data attuale
$now = getdate(time());


// controlliamo mese e anno passati
if ( empty($month) OR empty($year) OR !is_numeric($month) OR !is_numeric($year) OR !@checkdate($month,1,$year) )
{
$month = $now['mon'];
$year = $now['year'];
}
// unix timestamp del primo giorno
// del mese e dell'anno ricevuti
$time = mktime(0,0,0, $month, 1, $year);
// genera l'array con le informazioni
$date = getdate($time);
// giorni totali per il mese e anno
$day_total = cal_days_in_month(CAL_GREGORIAN, $date['mon'], $date['year']);
//stampa mese e anno in oggetto in italiano come intestazione
setlocale(LC_TIME,"it_IT");
$mese_anno = strftime('%B',$date[0]). " " .$year;

echo "<table><tr><td colspan=\"7\">$mese_anno</td></tr>\n";
// stampa le abbreviazioni dei giorni della settimana
echo "<tr><td>Do</td><td>Lu</td><td>Ma</td><td>Me</td> <td>Gi</td><td>Ve</td><td>Sa</td></tr>\n";
for ($i = 0; $i < 6; $i++)
{
echo '<tr>';
for ($j = 1; $j <= 7; $j++)
{
$day_number = $j + $i*7 - $date['wday'];
//stampa la cella con il giorno
echo '<td';
if ($day_number > 0 AND $day_number <= $day_total)
{
// borda di rosso se è oggi
if ($day_number == $now['mday'] AND $month == $now['mon'] AND $year == $now['year'])
{
echo " style=\"border: 1px solid #cc0000;\" ";
}
echo ">$day_number";
}
else
{
//stampa una cella vuota se non esiste il giorno
echo '>';
}
echo '</td>';
}
echo "</tr>\n";
if ($day_number >= $day_total AND $i != 6)
break;
}
echo "</table>\n";
}
?>