Pisane na szybko i w formie sprawdzenia samego siebie

mam nadzieje ze Ci sie przyda ...
<?php
$dni = array(1=>'poniedziałek',2=>'wtorek',3=>'środa',4=>'czwartek',5=>'piątek',6=>'sobota',7=>'niedziela'); $miesiace = array(1=>'Styczen', 2=>'Luty',3=>'Marzec',4=>'Kwiecień', 5=>'Maj',12=>'Grudzień'); list
($start_day,$start_month,$start_year) = explode('.','04.12.2006');list
($end_day,$end_month,$end_year) = explode('.','22.03.2007');
$start = mktime(1
,1
,1
,$start_month,$start_day,$start_year); $end = mktime(1
,1
,1
,$end_month,$end_day,$end_year);
$one_day = 24*60*60; // czas jednego dnia
for($time=$start; $time<=$end; $time += $one_day){
$dzien = date('w',$time); $dzien = $dzien == 0 ? 7 : $dzien; //bo w php 0 to niedziela
$calendar[date('Y',$time)][(int
)date('m',$time)][(int
)date('d',$time)] = 'wylot albo cena biletu'; //echo date('d.m.Y',$time)."<br>";
}
}
foreach ($calendar as $rok => $reszta){
echo "<b>$rok</b><br>\n"; draw_month($rok,$reszta);
}
function draw_month(&$rok,&$miesiac_dzien){
$pierwszy_dzien = date('w',mktime(1
,1
,1
,$miesiac,1
,$rok)); $ilosc_dni = date('t',mktime(1
,1
,1
,$miesiac,1
,$rok)); echo '<b>'.$miesiace[$miesiac].'</b><br>'; draw_days($pierwszy_dzien,$ilosc_dni,$miesiac_dzien[$miesiac]);
}
}
function draw_days($pierwszy_dzien,$ilosc_dni,$dni_wylotu){
$pierwszy_dzien = $pierwszy_dzien == 0 ? 7 : $pierwszy_dzien;
echo '<table border="1">'; foreach ($dni as $dzien){
echo '<th>'.$dzien.'</th>'; }
$kratka = 0;
// wyswietlam puste kratki na poczatku miesiaca
for($i=1;$i<$pierwszy_dzien;$i++){
$kratka++;
if (!($kratka%7
)) echo '</tr><tr>';
}
//wyswietlam dni z odlotami
for($i=1;$i<=$ilosc_dni;$i++){
$kratka++;
echo '<br>'.$dni_wylotu[$i]; }
if (!($kratka%7
) && $kratka != $pierwszy_dzien + $ilosc_dni-1
) echo '</tr><tr>'; }
// wyswietlam puste kratki na koncu miesiaca
while ($kratka%7){
$kratka++;
}
}
?>