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."\">«</a> ";
print "[b]".$nomemese[$mm-1]." ".$aa."[/b] ";
print "<a href=\"".$next."\">»</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>";
?>