#4 Ericsko
Tez jsem to ted objevil nejak to nemohu skloubit. Kdyby Vas to zajimalo a chtel jste si to odladit tez. Prilozim dalsi soubory.
./class/kalendar.php
<?php
class Kalendar
{
var $mesic;
var $rok;
// konstruktor kalendare
function Kalendar($mesic, $rok)
{
$this->mesic=$mesic;
$this->rok=$rok;
}
// funkce vrati pocet dnu
function pocetDnu()
{
return cal_days_in_month(CAL_GREGORIAN, $this->mesic, $this->rok);
}
// nastaveni prvniho dne v kalendari
function prvniDen()
{
$anglickeporadi = date("w", mktime(0, 0, 0, $this->mesic, 1, $this->rok));
return ($anglickeporadi==0) ? 7 : $anglickeporadi;
}
// nastaveni bunky v kalendari
function bunka($radek, $sloupec, $prvniDen, $pocetDnu)
{
$dny=Array(1=>"Po", "Út", "St", "Čt", "Pá", "So", "Ne");
if ($radek==1) return $dny[$sloupec];
$chcivratit = ($radek-2)*7 + $sloupec - $prvniDen+1;
if ($chcivratit<1 || $chcivratit>$pocetDnu) return " "; else return $chcivratit;
}
// vypis kalendare
function vypisTeloKalendare()
{
$mesice=Array(1=>"Leden", "Unor", "Brezen", "Duben", "Kveten", "Cerven", "Cervenec", "Srpen", "Zari", "Rijen", "Listopad", "Prosinec");
if(!is_numeric($this->mesic))
{
echo "Měsíc musí být číslo!";
return;
}
if(!is_numeric($this->rok))
{
echo "Rok musí být číslo!";
return;
}
if($this->mesic<1 || $this->mesic>12)
{
echo "Měsíc musí být číslo od 1 do 12";
return;
}
if($this->rok<2013 || $this->rok>2050)
{
echo "Rok musí být číslo od 2013 do 2050";
return;
}
$pocetDnu = $this->pocetDnu($this->mesic, $this->rok);
$prvniDen = $this->prvniDen($this->mesic, $this->rok);
$radku = date("W", mktime(0, 0, 0, $this->mesic, $pocetDnu-7, $this->rok)) - date("W", mktime(0, 0, 0, $this->mesic, 1+7, $this->rok))+4;
// tvorba kalendare
echo "<table class=\"kalendar\"><tr>";
// vypis zahlavi
echo "<th id=\"kleva\" class=\"lr-caption\">«</th>".
"<th class=\"caption\" colspan=\"5\">".$mesice[$this->mesic]." ".$this->rok."</th>".
"<th id=\"kprava\" class=\"lr-caption\">»</th></tr>";
// vypis jednotlivych bunek v kalendari
// radek
for ($radek=1;$radek<=$radku;$radek++)
{
echo "<tr>";
// sloupec
for($sloupec=1; $sloupec<=7; $sloupec++)
{
// pokud sem na prvnim radku, tak vypisu nazvy dnu v tydnu
if($radek==1)
echo "<th>".$this->bunka($radek, $sloupec, $prvniDen, $pocetDnu)."</th>";
else
{
// prazdnym bunkam zmenim pozadi
if($this->bunka($radek, $sloupec, $prvniDen, $pocetDnu)==" ")
echo "<td class=\"prazdna\">".$this->bunka($radek, $sloupec, $prvniDen, $pocetDnu)."</td>";
else
{
// zvyrazni aktualni datum
if($this->rok == date('Y') && $this->mesic == date('n') && $this->bunka($radek, $sloupec, $prvniDen, $pocetDnu) == date('j'))
echo "<td class=\"dnes\">".$this->bunka($radek, $sloupec, $prvniDen, $pocetDnu)."</td>";
else
// bezne bunky vypis
echo "<td>".$this->bunka($radek, $sloupec, $prvniDen, $pocetDnu)."</td>";
}
}
}
echo "</tr>";
}
echo "</table>";
}
}
?>
./ajax.js
$(document).ready(function(){
// nastav aktualni datum
datum = new Date();
mesic = datum.getMonth() + 1;
rok = datum.getFullYear();
// nacti kalendar
$("#kalendar").load("ajax_kalendar.php", function(){
//klikem na prave posun o mesic vpred
$(this).find("#kprava").click(function(){
mesic++;
if(mesic>12)
{
mesic=1;
rok++;
}
$("#kalendar").load("ajax_kalendar.php",{k_mesic: mesic, k_rok: rok});
});
//klikem na leve posun o mesic vzad
$(this).find("#kleva").live("click", function(){
mesic--;
if(mesic<1)
{
mesic=12;
rok--;
}
$(this).load("ajax_kalendar.php",{k_mesic: mesic, k_rok: rok});
});
});
});
./ajax_kalendar.php
<?php
include './class/kalendar.php';
// vytvoření kalendáře pomoci ajaxu
if(!isset($_POST['k_mesic']) || !isset($_POST['k_rok']))
$kalendar= new Kalendar(date("n"), date("Y"));
else
$kalendar= new Kalendar($_POST['k_mesic'],$_POST['k_rok']);
$kalendar->vypisTeloKalendare();
?>
V html staci div s id="kalendar".
Jinak moc si vazim vasi pomoci toto jsem umistil asi na 3 fora o programovani a jste prvni clovek za pul dne co kde zareagoval :-D. Dekuju moc za popostrceni.