Creiamo un calendario in orizzontale con due cicli php. Il calendario è stato posizionato in cima alla pagina grazie alla proprietà position dei css. Formattazione css
<style type="text/css">
table.cal_oriz{
text-align:center;
border-collapse: collapse;
position: fixed;
top:0;
left:0;
background-color: white;
width: 100%;
border:2px solid #053E85;
}
table.cal_oriz tr {
border-bottom:1px solid #053E85;
}
table.cal_oriz td {
padding:5px;
}
table.cal_oriz td.dom{
background-color:#053E85;
color: #FFF;
}
table.cal_oriz td.sab{
background-color: #CBCBCB;
}
table.cal_oriz td.oggi{
border:2px solid #053E85;
font-weight:bold;
}
</style>
I cicli php
<?php
$month = date('m');
$year = date('Y');
$oggi = date("d");
$giorni_settimana = array(1, "L", "M", "M", "G", "V", "S", "D");
$mese = array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
$time_primo_del_mese = mktime(0, 0, 0, $month, 1, $year);
$primo_del_mese = date('w', $time_primo_del_mese);
$giorni_nel_mese = cal_days_in_month(CAL_GREGORIAN, $month, $year);
echo "<p>" . $mese[($month - 1)] . "</p>";
echo "<table class='cal_oriz'>";
echo "<tr>";
$g = $primo_del_mese;
for ($i = 1; $i <= $giorni_nel_mese; $i++) {
$classe = "";
if ($giorni_settimana[$g] == "D") {
$classe = " class=\"dom\"";
} elseif ($giorni_settimana[$g] == "S") {
$classe = " class=\"sab\"";
}
echo "<td $classe>" . $giorni_settimana[$g] . "</td>";
if ($g == 7) {
$g = 1;
} else {
$g++;
}
}
echo "</tr>";
echo "<tr>";
for ($i = 1; $i <= $giorni_nel_mese; $i++) {
$classe = "";
if ($i == $oggi) {
$classe = " class=\"oggi\"";
}
echo "<td $classe>$i</td>";
}
echo "</tr>";
echo "</table>";
Aggiornamento 8/12/2014
Ho aggiunto i backslash nel codice php per evitare errori di sintassi. Ho modificato il css con quello dell'esempio. Ora dovrebbe funzionare anche con il copia/incolla. Grazie a Carlo per la segnalazione.