Un calendario perpetuo in PHP

Posted on febbraio 9, 2008
Filed Under News Publishing | 5 Comments

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 wholesale nfl jerseys 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 == “”)
{<br nba jerseys sales />
$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 NFL Jerseys Cheap 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 wholesale nfl jerseys 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 oakley sunglasses sale 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, +TV Autore, Descrizione, data_Inserimento, Giorno_Cal (corrisponde ad x del codice PHP sopra esposto).

Tag:, ,

Others Script adv

5 Responses to “Un calendario perpetuo in PHP”

  1. Nik on marzo 20th, 2010 14:43

    C’è almeno un errore in questa righe:

    print(“”); //table
    print(“\n\t\n\t\t<< ”.$human_month[(int)$mese_].” “.$anno_.” >>\n\t”); //mese/anno

  2. leofire on marzo 27th, 2010 13:24

    Ciao Nik,

    e’ probabile che nel copia incolla che fai dal blog le virgolette vengano codificate in maniera scorretta.
    Prova a sostituirle con le virgolette presenti sopra il tasto “2”; vedrai che tutto funziona correttamente.

    Se hai suggerimenti o script scrivici pure avremo piacere a pubblicare tutto il materiale.

    Grazie per la segnalazione!

  3. Gianluca on aprile 23rd, 2010 16:42

    Si, infatti funziona tutto con le virgolette giuste. Sarebbe molto utile un calendario che invece di essere disposto in modo classico, fosse messo con i giorni per esteso. Tutti in un’unica riga. Ovviamente i giorni partono tutti da 1 fino all’ultimo del mese, ma i giorni della settimana ovviamente non da lunedi, ma dal giorno corrispondente al primo di quel mese… come si può fare ?

  4. ip camera on dicembre 18th, 2010 07:10

    This has definitely sparked up an idea in my mind. This can be a amazing website article.

  5. Riccardo Mel on novembre 2nd, 2011 15:33

    Grande davvero un ottimo tutorial!

Leave a Reply