Ho trovato su internet questo script php che mi permette di stampare un calendario:
Ora ho notato che stampa 28 giorni per ogni mese. Essendo febbraio di 28 ho pensato che probabilmente fa riferimento al mese attuale, non ricordo se a gennaio mi dava 31 giorni.
Dato che utilizzo il calendario per evidenziare una serie di appuntamenti, vorrei che il calendario, quando vado avanti con i mesi, mi stampi il numero esatto di giorni in base al mese, come devo modificare il codice per ottenere questo?
PHP:
<div id="calendar_wrap">
<?php
//Sat_
//calendario perpetuo, non serve altro che chiamare la funzione con calendario($mese,$anno)
//open source, fanne un po' che ti pare.
function calendario($mese,$anno){
Global $_GET;
if ($_GET['x'] == NULL){
$mese_ = $mese;
$anno_ = $anno;
}
else{
$mese_ = (int)strftime( "%m" ,(int)$_GET['x']);
$anno_ = (int)strftime( "%Y" ,(int)$_GET['x']);
}
$prev = mktime(0, 0, 0, $mese_ -1, 1, $anno_);
$next = mktime(0, 0, 0, $mese_ +1, 1, $anno_);
$human_month = array("error", "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" );
$settimana = array("Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom");
$colonne = 7;
$giorni = date("t",mktime(0, 0, 0, $mese, 1, $anno)); //giorni del mese in questione
$primo_lunedi= date("w",mktime(0, 0, 0, $mese, 1, $anno)); //Array_parte da 0
if($primo_lunedi==0){
$primo_lunedi = 7; //siamo mica americani
}
print("<table>"); //table
print("\n\t<tr height=\"20\" class=\"txtday\">\n\t\t<td colspan=\"".$colonne."\" align=\"center\">");
print("<a href=\"?x=".$prev."\"><<</a> <span class=\"txtma\">".$human_month[(int)$mese_]." ".$anno_."</span>
<a href=\"?x=".$next."\">>></a></td>\n\t</tr>"); //mese/anno
foreach($settimana as $val){
print("\n\t\t<td height=\"20\" class=\"txtma\">".$val."\t</td>"); //stampa i giorni della settimana
}
print("</tr>");
for($i = 1; $i<$giorni+$primo_lunedi; $i++){ //stampa i giorni
if($i%$colonne+1==0){
print("\n\t<tr>");
}
if($i<$primo_lunedi){
print("\n\t\t<td> </td>");
}
else{
$giorno_= $i-($primo_lunedi-1); //verifico se la data di oggi
$data = strtotime(date($anno_."-".$mese_."-".$giorno_));
$oggi = strtotime(date("Y-m-d"));
/* vedo nel file testuale appuntamenti.txt le date degli appuntamenti */
$eventi = fopen("appuntamenti.txt","r");
while ($rigafile = fgets($eventi,1024)) {
$campiriga = explode("|",$rigafile);
$d = strtotime(date("$campiriga[1]")); /*ricavo le date appuntamenti*/
$evento = "$campiriga[2]";
if ($data == $d){
$giorno_ = "<a href='#' class='tooltip' title='$evento'>$giorno_ </a>"; //evidenzio i giorni con appuntamenti in un tooltip
}
}
if ($data != $oggi){
print("\n\t\t<td class=\"txtday\">".$giorno_."</td>");
}
else{
print("\n\t\t<td><span class=\"txtoggi\">".$giorno_."</span></td>"); //stampa in rosso la data odierna
}
}
if($i%$colonne==0){
print("\n\t</tr>");
}
}
print("\n\t<tr height=\"30\"> \n\t</tr>");
print("\n</table>");
}
calendario(date("m"),date("Y")); //stampa del calendario
?>
</div>
Ora ho notato che stampa 28 giorni per ogni mese. Essendo febbraio di 28 ho pensato che probabilmente fa riferimento al mese attuale, non ricordo se a gennaio mi dava 31 giorni.
Dato che utilizzo il calendario per evidenziare una serie di appuntamenti, vorrei che il calendario, quando vado avanti con i mesi, mi stampi il numero esatto di giorni in base al mese, come devo modificare il codice per ottenere questo?