Un calendario perpetuo in PHP
Posted on Febbraio 9, 2008
Filed Under News Publishing, Senza categoria |
Con questo breve tutorial commenteremo un codice php dedicato alla creazione di un semplice calendario perpetuo; capiremo poi come integrare il calendario con una tabella MySql ove inserire eventi che verranno visualizzati cliccando sul relativo giorno del calendario.Nel seguito andremo a commentare il codice che genera il calendario:
<?php
//calendario perpetuo, non serve altro che chiamare la funzione con calendario($mese,$anno)
function calendario($mese,$anno)
{
// Se e’ presente la variabile “x” prendo mese ed anno altrimenti prendo i dati di oggi (data del server!)
isset($_GET[’x']) ? $x = $_GET[’x'] : $x = “”;
if ($x == “”)
{
$mese_ = $mese;
$anno_ = $anno;
}
else
{
$mese_ = (int)strftime( “%m” ,(int)$_GET[’x']);
$anno_ = (int)strftime( “%Y” ,(int)$_GET[’x']);
}
// prendo i dati precedenti e successivi…
$prev = mktime(0, 0, 0, $mese_ -1, 1, $anno_);
$next = mktime(0, 0, 0, $mese_ +1, 1, $anno_);
// Rendo i tempi del server…umani.
$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; //non siamo americani
// Creiamo la tabella ove visualizzare intestazione (<< Mese Anno >>)
print(”<table width=\”210\” colspacing=\”0\” border=\”0\”>”); //table
print(”\n\t<tr height=\”20\”>\n\t\t<td colspan=\”".$colonne.”\” align=\”center\”><a href=\”?x=”.$prev.”\”><<</a> <span>”.$human_month[(int)$mese_].” “.$anno_.”</span> <a href=\”?x=”.$next.”\”>>></a></td>\n\t</tr>”); //mese/anno
// Mostro i giorni della settimana…
foreach($settimana as $val)
print(”\n\t\t<td height=\”20\”>”.$val.”\t</td>”);
print(”</tr>”);
// Stampiamo i giorni del mese…
for($i = 1; $i<$giorni+$primo_lunedi; $i++)
{
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);
$a = strtotime(date($anno_.”-”.$mese_.”-”.$giorno_));
$b = strtotime(date(”Y-m-d”));
// Evidenziamo oggi…
if($a != $b)
print(”\n\t\t<td><a href=\”?x=”.$a.”\”>”.$giorno_.”</a></td>”);
else
print(”\n\t\t<td><a href=\”?x=”.$a.”\”><strong>”.$giorno_.”</strong></a></td>”);
}
if($i%$colonne==0)
print(”\n\t</tr>”);
}
print(”\n\t<tr height=\”30\”> \n\t</tr>”);
print(”\n</table>”);
}
// Richiamiamo la funzione che genera il calendario…
calendario(date(”m”),date(”Y”));
?>
Salviamo il codice sopra esposto in un file chiamato calendario.php. Avviamo il Web Server (supponiamo Apache) ed inserendo il file appena salvato all’interno della cartella di lavoro che desideriamo (Supponendo di utilizzare Windows ed EasyPHP possiamo posizionare il file in c:\Programmi\EasyPHP1.8\www\calendario.php)
Per lanciare lo script bastera’:
TASTOWIN + R — iexplore http://127.0.0.1/calendario.php<INVIO>
Si aprira’ Internet Explorer e comparira’ il calendario. Al calendario mancano ovviamente gli stili che verranno associati dallo sviluppatore della parte grafica. Potremo collegare il calendario ad un Database MySql in modo da visualizzare gli eventi giornalieri dando particolare enfasi ai giorni che presentano degli eventi in modo che l’utente possa trovarli con piu’ facilita’.
Per ogni pagina potremo inserire un semplice form con il campo hidden x per inserire gli eventi direttamente nel Database con i seguenti campi: Titolo, Autore, Descrizione, data_Inserimento, Giorno_Cal (corrisponde ad x del codice PHP sopra esposto).
Tags: calendario, eventi, news giornaliere
Others Script adv
Leave a Reply