style.css .td {font-weight: bold; background-color: #00cccc;} .tm {font-weight: bold; background-color: #00cccc;} .hd {font-weight: bold;} .am {color: #cccccc;} .bd {background-color: #cccccc; font-weight: bold;} td {font-family: Arial; font-size: 9pt;} kalender.php Kalender "ma", "di", "wo", "do", "vr", "za", "zo"); $maandnaam = array(1 => "Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"); $nu = time(); $by = (date("Y", $nu) == $fy); $bm = (date("n", $nu) == $fm); // zoek de eerste maandag van de week waarin de maand $fm begint $eerstedag = mktime(0, 0, 0, $fm, 1, $fy); if(date("w", $eerstedag) <> 1) { // eerste dag van de maand is geen maandag $eerstemaandag = mktime(0,0,0,$fm,1-(!date("w", $eerstedag) ? 6 : date("w", $eerstedag) - 1),$fy); } else { // eerste dag van de maand valt op een maandag $eerstemaandag = $eerstedag; } // zoek de laatste zondag van de week waarin de maand $fm eindigt $laatstedag = mktime(0, 0, 0, $fm, date("t", mktime(0, 0, 0, $fm, 1, $fy)),$fy); if(date("w", $laatstedag)) { // laatste dag van de maand is geen zondag $laatstezondag = mktime(0, 0, 0, $fm+1, 7 - date("w",$laatstedag), $fy); } else { // laatste dag van de maand valt op een zondag $laatstezondag = $laatstedag; } // we gaan kijken in hoeveel kalenderweken een maand zit. Hierbij moeten we op twee speciale gevallen // letten: de eerste maandag van januari en de laatste zondag van december, deze kunnen namelijk in // een ander jaar zitten en hierdoor de berekening van het het aantal weken verknoeien. $edz = 0; // extra dagen die aan de zondag toegevoegd moeten worden if($fm == 1 && date("Y", $eerstemaandag) <> $fy) { // de maand waar we naar kijken is januari, en de eerste dag van de week waarin januari begint // valt niet op een maandag (en niet in het huidige jaar) // - we dienen dus dagen toe te voegen aan de laatste zondag... $edz = date("z", mktime(0,0,0,12,31,$fy-1))+1; } if($fm == 12 && date("Y", $laatstezondag) <> $fy) { // de maand waar we naar kijken is december, en de laatste dag van de week waarin december eindigt // valt niet op een zondag (en niet in het huidige jaar) // - we dienen dus dagen toe te voegen aan de laatste zondag... $edz = date("z", mktime(0,0,0,12,31,$fy))+1; } // we kunnen nu het aantal weken berekenen - het verschil tussen de // eerste maandag en de laatste zondag +1 is altijd deelbaar door 7. $aantalweken = (date("z", $laatstezondag) + $edz - date("z", $eerstemaandag) + 1)/7; // we kunnen nu mbv $eerstemaandag en $aantalweken de kalender van een maand af gaan drukken echo "\n"; echo "\n"; // weeknummers afdrukken echo ""; for($i=0; $i < $aantalweken; $i++) { $week = date("W", $eerstemaandag + $i * 604800 + 3600); // seconden in een week + een uur echo ""; } echo ""; // dagnamen en dagnummers afdrukken for($d = 0; $d < 7; $d++) { echo "\n"; echo "\n"; for($w = 0; $w < $aantalweken; $w++) { // in verband met zomer en wintertijd moet bij de dag een uur opgeteld worden // anders krijg je 2x dezelfde dag achter elkaar $dag = $eerstemaandag+($w*7+$d)*86400 + 3600; $dagnummer = date("j", $dag); $bd = (date("j", $nu) == $dagnummer); echo " $fm ? " class=\"am\"": ($by && $bm && $bd ? " class=\"td\"" : "")).">"; echo ($dagnummer < 10 ? "0" : "").$dagnummer; echo ""; } echo "\n"; } echo "
"; echo $maandnaam[$fm]." ".$fy; echo "
 ".(($week < 10) ? "0".$week : $week)."
".$dagnaam[$d]."
\n"; } // einde functie drukmaandaf // extra - kijkt in de url of er al eens een kalendermaand is opgevraagd if(!isset($_GET['m']) || !isset($_GET['y'])) { $m = date("n"); $y = date("Y"); } else { $m = $_GET['m']; $y = $_GET['y']; } // drukt de kalender af drukmaandaf($m, $y); // linkjes naar vorige en volgende maand echo " 1 ? $m-1 : 12)."&y=".($m > 1 ? $y : $y-1)."\">previous | "; echo "next"; ?>