Menù

Demo

  • aggiornato il 10/02/2025 09:00:31

Top 5

Semplice calendario

Costruiamo un semplice calendario in php sfruttando alcune funzioni native del linguaggio.

Un pò di css per personalizzare il calendario

<style type="text/css">
    table.tabcal{
        margin:auto;
        width:210px;
        text-align: center;
        font-size:13px;
        color:#000;
        letter-spacing: 0;
        border:2px solid #980000;
        border-radius: 4px;
    }
    table.tabcal td {
        padding: 3px 5px 3px 5px;
        background-color: #E9E9E9;
    }
    table.tabcal td.daycolor {
        font-weight: bold;
        border:1px solid #980000;
        border-radius: 4px;
    }
    table.tabcal td.empty {
        background-color: #fff;
    }
    table.tabcal tr.bold {
        font-weight: bold;
    }
    table.tabcal td.red {
        background-color: #980000;
        color:#FFF;
    }
    table.tabcal td a {
        text-decoration: none;
        color:#FFF;
    }
</style>

codice php

<?php
// verifichiamo se è stata scelto un altra data
if (isset($_GET['m']) && isset($_GET['y'])) {
    // qui i controlli sarebbero da aumentare 
    if (is_numeric($_GET['m']) && is_numeric($_GET['y'])) {
        echo calendario($_GET['m'], $_GET['y']);
    } else {
        echo calendario(date('m'), date('Y'));
    }
} else {
    //altrimenti impostiamo la data corrente
    echo calendario(date('m'), date('Y'));
}
// funzione che restituisce il nome del mese indicato in italiano
function nome_mese($m) {
    $mesi = array(1, 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio',
        'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
    return $mesi[$m];
}
// Parametri obbligatori : mese e anno
function calendario($month, $year) {
    $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 "<table class='tabcal'>";
    echo "<tr class='bold'>";
    echo "<td class='red' colspan='7'>" . nome_mese((int) $month) . " " . $year . "</td>";
    echo "</tr>";
    echo "<tr class='bold'>";
    echo "<td>D</td>";
    echo "<td>L</td>";
    echo "<td>M</td>";
    echo "<td>M</td>";
    echo "<td>G</td>";
    echo "<td>V</td>";
    echo "<td>S</td>";
    echo "</tr>\n";
    // questo ciclo annidato l'ho trovato in rete tempo fa ma non ricordo dove
    for ($i = 0; $i < 6; $i++) {
        echo "<tr>";
        for ($x = 1; $x <= 7; $x++) {
            $y = $x + ($i * 7) - $primo_del_mese;
            echo "<td";
            if ($y > 0 && $y <= $giorni_nel_mese) {
                if ($y == date('d') && $month == date('m') && $year == date('Y')) {
                    echo " class='daycolor' ";
                }
                echo ">$y";
            } else {
                echo " class='empty'> ";
            }
            echo "</td>";
        }
        echo "</tr>";
        if ($y >= $giorni_nel_mese && $i < 6)
            break;
    }
    // creiamo un piccolo menu di navigazione
    $before = explode('-', date('m-Y', mktime(0, 0, 0, $month - 1, 1, $year)));
    $next = explode('-', date('m-Y', mktime(0, 0, 0, $month + 1, 1, $year)));
    $prossimo = nome_mese((int) $next[0]);
    $precedente = nome_mese((int) $before[0]);

    echo "<tr>";
    echo "<td class='red' colspan='7'>";
    echo " <a href='" . $_SERVER['PHP_SELF'] . "?m=" . $before[0] . "&y=" . $before[1] . "'>$precedente</a>";
    echo " <<   >> <a href='" . $_SERVER['PHP_SELF'] . "?m=" . $next[0] . "&y=" . $next[1] . "'>$prossimo</a>";
    echo "</td>";
    echo "</tr>";
    echo "</table>";
}
?>
  • 10/02/2025 08:49

criric

Mi sono appassionato di programmazione web a 34 anni, un pò tardi, da allora però non perdo mai occasione per imparare qualcosa di nuovo in questi campi.

Javascript - Html - Css - Php - Mysql

Inserisci un commento

Codice antispam

Categorie

Comunicazioni

Puoi utilizzare questo modulo per qualsiati tipo di segnalazione.

Codice antispam

 

I dati di questo modulo non verranno pubblicati.