Kalendář s možností listování a odkazy na dny - ukázka zdrojového kódu zdrojový kód

<?

// pokud nejsou proměnné zinicializovány, vloží aktuální hodnoty
if(!IsSet($month)) $month Date("m");
if(!IsSet(
$year)) $year Date("Y");

// převod na korektní hodnoty
$year Date("Y"MkTime(0,0,0$month1$year));
$month Date("m"MkTime(0,0,0$month1$year));

$count_days Date("t"MkTime(0,0,0$month1$year)); // počet dnů v měsíci

// ke každému dni přiřadí jeho číslo v týdnu (1 = pondělí, ...)
for($i=1;$i<=$count_days;$i++):
    
$date[$i] = Date("w"MkTime(0,0,0,$month,$i,$year));
    if(
$date[$i]==0$date[$i] = 7;
endfor;

$first $date[1];    // číslo prvního dne v měsíci (1 = pondělí, ...)


// vypisuje odkazy pro zobrazení statistiky za dané období
function DateLink($from$to$text)
 {
  global 
$month$year;
  
  if(
MkTime(0,0,0,$month,$from,$year) <= MkTime(0,0,0Date("m"), Date("d"), Date("Y"))):
      echo 
'<a href="ukaz.php?month=' $month '&year=' $year '&from_date=' $year '-' $month '-' $from '&to_date=' $year '-' $month '-' $to '">';
      echo 
$text;
      echo 
'</a>';
  else:
      echo 
$text;
  endif;
 }

?>

<table cellspacing="0" align="center">
<tr><td align="center" colspan="8">

<?

// předchozí, aktuální a následující měsíc
echo '<a href="kalendar.php?month=' . ($month-1) . '&year=' $year '">&lt;&lt;</a>&nbsp;&nbsp;&nbsp;';
DateLink(1$count_days$month " / " $year);    // odkaz na měsíční statistiku
echo '&nbsp;&nbsp;&nbsp;<a href="kalendar.php?month=' . ($month+1) . '&year=' $year .  '">&gt;&gt;</a>';

?>

</td></tr>
<tr><td>T</td><td>Po</td><td>Út</td><td>St</td><td>Čt</td><td>Pá</td><td>So</td><td>Ne</td></tr>

<?

$day 
0;
for(
$x=0;$x<=5;$x++):
    echo 
'<tr><td align="center"><b>';

    
// poslední den v týdnu
    
    
if($x==0)    // první týden
        
$end 7-$first+1;
    elseif(
$day+7>=$count_days)    // poslední týden
        
$end $count_days;
    else    
// zbylé týdny
        
$end $day+7;

    
// odkaz na týdenní statistiku
    
DateLink($day+1$end$x+1);

    echo 
'</td>';
    
    for(
$i=1;$i<=7;$i++):
        echo 
'<td align="center">';
        
$day $x*7+$i-$first+1// na základě obou cyklů postupně počítá den
        
        
if($date[$day] == $i)
            
DateLink($day$day$day); // odkaz na denní statistiku
        
else
            echo 
"&nbsp;";    

        echo 
'</td>';
    endfor;
    echo 
'</tr>';

    if(!
CheckDate($month$day+1$year)) break; // pokud neexistuje následující datum, ukončí cyklus
endfor;
?>

</table>
Vložil/Poslal/Autor: Admin
Funkčnost: běží na straně serveru, nemělo by záležet na typu prohlížeče
zavřít okno | jít na hlavní stránku JakNaWeb.com