ragazzi aiuto non riesco a capier perche questo calendario nei mesi di febraio e marzo del 2009 mi stampa il primo giorno in lunedi mentre è di domenica datemi una mano non so piu come ragionare..... vi posto il codice...grazie mille.
Codice PHP:
<?php
//array per il nome dei giorni della settimana
$giorno=array(" L "," M "," M "," G "," V "," S "," D ");
//array dei nomi dei mesi dell'anno
$n_mese=array("GENNAIO","FEBRAIO","MARZIO","APRILE","MAGGIO","GIUGNO","LULGLIO","AGOSTO","SETTEMBRE","OTTOBRE","NOVEMBRE","DICEMBRE");
//recupero i dati riguardanti la data. in base al fatto che la data sia recuperata dal server o 
//che l'utente stia navigando nel calendario quindi inviando variabili in GET.
$aa=$_REQUEST['aa'];
if(
$aa=="")
    {
    
$aa=date("Y");
    }
$mm=$_REQUEST['mm'];
if(
$mm=="")
    {
    
$mm=date("n");
    }
//creo la tabella che conterra il calendario.
echo "<table width='147' style='border:solid 2px #999999' align='center'>";
$anno=$aa$mese=$mm;
   if (
$mese==1$back="?aa=".($anno-1)."&mm=12";      
   else 
$back="?aa=".$anno."&mm=".($mese-1);
   if (
$mese==12$next="?aa=".($anno+1)."&mm=1";      
   else 
$next="?aa=".$anno."&mm=".($mese+1);
   print 
"<div align='center'>";
   print 
"<a href=\"".$back."\">&laquo;</a>  ";
   print 
"[b]".$nomemese[$mm-1]." ".$aa."[/b]  ";
   print 
"<a href=\"".$next."\">&raquo;</a>";
   print 
"</div>";
//apro la riga che conterra le intestazioni quindi i giorni della settimana
echo "<tr>";
//creo il ciclo che scorre l'arrray dei giorni della settimana.
for($i=0;$i<7;$i++)
    {
//stampo la cella d'intestazione e formatto il testo.
        
echo "<th style='text-align:center; font-size:12px'>";
//stampo il giorno della settimana contenuto nell'array in base al suo indice coordinato dalla variabile di controllo del ciclo for
        
echo $giorno[$i];
//a agni ciclo for viene stampato il tag seguente che chiudera la cella di intestazione con il suo contenuto.
        
echo "</th>";
//chiudo il ciclo for
    
}
//stampo il tag seguente che mi chiude la riga che contiene i giorni della settimana.
echo "</tr>";
//nella variabile $primo inserisco il primo giorno del mese restituito dalla funzione mktime.
$primo=mktime(0,0,0,$mm,1,$aa,0);
/*utilizzo la funzione data con w cosi recupero il numero della settimana con i giorni che partono da lunedi aggiungendo il parametro timestamp che contiene il primo giorno del mese recupero il giorno iniziale del mese non il numero. e applico -1 perchè il ciclo inizia da 0.
*/
$delta=date("w",$primo)-1;
/*creo una nuova riga che conterra i giorni del mese e verra chiusa in basee al ciclo contenenti le varie 
            condizioni if/else per chiuderla*/                           
echo "<tr>";
//creo un ciclo per creare i spazi che non contengono i giorni all'inizio del mese.            
for($i=0$i<$delta$i++)
{
echo 
"<td style='text-align:center'></td>";
}
/*creo il ciclo for che inserisce i giorni della settimana costituito da: $i variabile che incrementa in base a date("t",$primo) la funzione date
prende il parametro t che mi restutuisce il numero dei giorni da cui è composto il mese cioè 28 30 31 e il parametro $primo timestamp che contiene il giorno iniziale del mese
*/ 
for ($i=1;$i<=date("t",$primo);$i++){
  if ((
$i+$delta)%7==1) echo "  <tr>"//inizio riga
  
if (($i==date("d"))&&($mm==date("n"))&&($aa==date("Y"))) {
      echo 
"<td style='text-align:center; font-size:12px; background-color:#E2E2E2; border:solid 1px #000000'>".$i."</td>";
    } else echo 
"<td style='text-align:center; font-size:12px'>".$i."</td>";
  if ((
$i+$delta)%7==0) echo "</tr>"//chiusura riga
}
echo 
"</table>";
?>