utentionline
searchengine
quicklinks
WebDesigner
Tutorials ASP
Tutorials XHTML
Tutorials Javascript
Tutorials HTML-CSS
Tutorials SQL
Tutorials PHP & MySQL
AJAX applicazioni web
Web Development
Template & Layout
Non solo Web :: Blog
Portfolio Lavori
Who is Yappy?
Benvenuto nella Newsletter
libririviste
Calendario motoGP 2007
newscorsi
FAQ & Domande
newscorsi
Web Designer gratuitoCorso Web Designer Gratuito per creare siti internet trucchi, consigli, esempi pratici e template per diventare un vero web designer.
Seo Extreme 2007
Al corso nazionale "Seo Extreme 2007" troverai le ultime tecniche e strategie di Posizionamento nei motori di ricerca. Parteciperai ad un corso di alto livello dedicato a chi vuole fare posizionamento...
libririviste
Web Design Facile"Web Design Facile" di Davide Vasta è una guida pratica che conduce il lettore, passo per passo attraverso la realizzazione di un sito Internet: dalla creazione di un prototipo da mostrare al cliente fino al suo sviluppo definitivo.
WebDesigner 22
Web Designer Magazine n.22. Flash in prima linea, conoscere l'ultima versione del programma Macromedia. Inserire video Flash nelle vostre pagine. In primo piano "diventare Designer di successo".
Web Marketing
Trucchi headlines efficaci 8Trucchi headlines efficaci 7
tagclouds
XHTML ?? Si, grazie. Tutorials Javascript Macromedia Web Classes Orologio digitale Yes Man - Danny Wallace Apartments in Florence James Bond Casino Royale Un Forum in ASP [Fase II] Creazione di un Layout con tab Orologio digitale Pensa se non ci avessi provato HackNews Blog Trucchi per Web Designer Galleria dinamica con JS Corso Avanzato di Web Marketin Come si fa un blog Motomondiale 2006syndicate
RSS 2.0Atom feed
CreativeCommons
Calendario eventi in PHP
[05 Mar 2006]Calendario universale in PHP, risolveremo il problema a vari livelli fino a realizzare il risultato desiderato...
Abbiamo utilizzato questo codice per il sito www.dotplanning.com in cui l'obiettivo è di avere un sistema di visualizzazione delle disponibilità? di appartamenti e Bed & Breakfast.
Può essere utilizzato anche per eventi e spettacoli naturalmente se associato opportunamente ad una struttura database.
Prima di tutto definisco i vettori per i giorni della settimana e dei mesi dell'anno, saranno necessari per la visualizzazione del calendario.
<?
$giorno = Array("L","M","M","G","V","S","D");
$nomemese = Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno", "Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");
?>
La struttura è studiata per ricevere dal server la data attuale o di riceverla direttamente dall'esterno dall'utente.
Questa caratteristica ci servirà? poi per definire un'efficace sistema di navigazione per muoversi avanti ed indietro nel tempo.
<?
$aa=$_REQUEST['aa'];
if ($aa=="") $aa=date("Y");
$mm=$_REQUEST['mm'];
if ($mm=="") $mm=date("n");
?>
Iniziamo la tabella con la prima riga dei giorni della settimana. Utilizzo un ciclo FOR.
<?
print "<table align='center'>";
// ciclo per i giorni della settimana
print " <tr>";
for ($i=0;$i<7;$i++){
print " <th>".$giorno[$i]."</th>";
}
print " </tr>";
?>
Nella fase successiva devo calcolare gli spazi da lasciare vuoti in funzione del giorno della settimana del primo giorno del mese.
Per questo calcolo il primo giorno del mese e memorizzo in $delta il giorno della settimana corrispondente.
Il valore ottenuto viene utilizzato per effettuare il ciclo.
<?
$primo=mktime(0,0,0,$mm,1,$aa); //calcolo il primo giorno del mese
$delta=date("w",$primo)-1;
print " <tr>n";
for ($i=0;$i<$delta;$i++){
print " <td> </td>";
}
?>
Finalmente posso effettuare il ciclo per posizionare correttamente i giorni del mese nel calendario, dal primo all'ultimo (date("t",$primo)).
Il meccanismo per andare a capo tiene conto del valore $delta calcolato nel passaggio precedente.
<?
for ($i=1;$i<=date("t",$primo);$i++){
if (($i+$delta)%7==1) print " <tr>"; //inizio riga
if (($i==date("d"))&&($mm==date("n"))&&($aa==date("Y"))) {
print " <td style='border:1px solid #f00'>".$i."</td>";
} else print " <td>".$i."</td>";
if (($i+$delta)%7==0) print " </tr>"; //chiusura riga
}
print "</table>n";
?>
Navigazione del tipo « Marzo 2006 »
Ed infine creiamo un sistema per muoversi avanti ed indietro nel tempo, a partire dai valori correnti, tenendo conto del passaggio di anno se $mese==1 oppure se $mese==12.
<?
$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>";
?>
Navigazione con menu a tendina
<?
print "<div align='center'>";
print "<form method='get' action='calendario.php' name='modulo'>";
print "<select name='mm' onchange='document.modulo.submit()'>";
for ($i=1;$i<=12;$i++){
if ($i==$mm) print "<option value='$i' selected>".$nomemese[$i-1]."</option>";
else print "<option value='$i'>".$nomemese[$i-1]."</option>";
}
print "</select> ";
print "<select name='aa' onchange='document.modulo.submit()'>";
for ($i=date("Y")-10;$i<=date("Y")+100;$i++){
if ($i==$aa) print "<option value='$i' selected>".$i."</option>";
else print "<option value='$i'>".$i."</option>";
}
print "</select>";
print "</form></div>";
?>


