Codice PHP:
<?php 
//il mese e l'anno di oggi
$mese date("m");
$anno date("y");

function 
calendario($mese,$anno){ 

global 
$_GET
if (
$_GET['id'] == NULL){ 
$mese_ $mese
$anno_ $anno

}else{ 

$mese_ = (int)strftime"%m" ,(int)$_GET['id']); 
$anno_ = (int)strftime"%Y" ,(int)$_GET['id']); 
$mese $mese_
$anno $anno_


$next mktime(000$mese_ +11$anno_); 

$human_month = array("error""Gennaio""Febbraio""Marzo""Aprile""Maggio""Giugno""Luglio""Agosto""Settembre""Ottobre""Novembre""Dicembre" ); 
$scelta="";
$settimana = array("Lun""Mar""Mer""Gio""Ven""Sab""Dom"); 
$colonne 7
$giorni date("t",mktime(000$mese1$anno)); //giorni del mese in questione 
$primo_lunedidate("w",mktime(000$mese1$anno)); //Array_parte da 0 

if($primo_lunedi==0) { 
$primo_lunedi 7


echo(
"<table width=\"210\" colspacing=\"0\" border=\"0\">"); //table 
echo("<tr height=\"20\">\n\t\t<td colspan=\"".$colonne."\" align=\"center\"><span>".$human_month[(int     )$mese]." ".$anno_."</span> <a href=\"?id=".$next."\">>></a></td></tr>"); 

foreach(
$settimana as $val){ 

echo(
"<td height=\"20\">".$val."</td>"); 


echo(
"</tr>"); 

for(
$i 1$i<$giorni+$primo_lunedi$i++){ 
if(
$i%$colonne+1==0){ 
echo(
"<tr>"); 

if(
$i<$primo_lunedi){ 
echo(
"<td> </td>"); 

else{ 
$giorno_$i-($primo_lunedi-1); 
$a strtotime(date($anno_."-".$mese_."-".$giorno_)); 
$b strtotime(date("Y-m-d")); 
if(
$a != $b){ 
echo(
"<td>$giorno."</td>"); 

else{ 
echo("
<td>[b][".$giorno."][/b]</td>"); 


if(
$i%$colonne==0){ 
echo("
</tr>"); 


echo("
<tr height=\"30\"> </tr>"); 
echo(
"</table>"); 


calendario(date("m"),date("Y"));
?>
EDIT: sostituisci i _ con gli spazi vuoti. Me li ha aggiunti da solo...