Autor Zpráva
Filips
Profil
Ahoj, chtěl bych se zeptat, jestli exituje někde návod jak vytvořit webový kalendář podobný tomu, který je na našich stránkách: www.paintball-nivnice.cz bohužel tento kalendář mi nedostačuje, ale jako pracovní základ by byl vynikající, existuje nějaký tutorial na výrobu? Díky
LamiCZ
Profil *
Zdar, toto jsem si udelal, je to na bazi timestamp. Tohle je lite verze, kde se automaticky dnesni a starsi dny zobrazi jako odkaz. Mam i mnohem slozitejsi verzi s DB a zobrazenim udalosti (vcetne rozliseni jednodennich a vicedennich).
P.S. neni to zadna kodova prehlidka, bylo to napsany rychle na jeden projekt ;)

<?

if((isset($_GET['tstamp'])) && (strlen($_GET['tstamp']) == 10)){  
  $year = date("Y", $_GET['tstamp']);
  $month = date("n", $_GET['tstamp']);
}else{
  $year = date("Y");
  $month = date("n");
}

$curr_month_start = mktime(0, 0, 0, $month, 1, $year);
$days = date("t", $curr_month_start);
$curr_month_end = mktime(0, 0, 0, $month, $days, $year);
$first_day = date("w", $curr_month_start);

$first_day_start = "";
if($first_day > 0){
  for($i = 0; $i < ($first_day - 1); $i++){
    $first_day_start .= "<td></td>";
  }
}else{
  $first_day_start = "<td></td><td></td><td></td><td></td><td></td><td></td>";
}
    
echo "<table class=\"cal\">\n";
echo "<tr>\n";

$r = 1;
for($day = 1; $day <= $days; $day++){
  
  $curr_day_start = mktime(0, 0, 0, $month, $day, $year);
  $curr_day_end = mktime(23, 59, 59, $month, $day, $year);

  if($days == $day){
    $curr_month_last_day_end = $curr_day_end;
  }
  
  if($day == 1){
    $curr_month_first_day_start = $curr_day_start;
  }
  
  $css_today = "";
  if(($day == date("j") && ($month == date("n")))){
    $css = "<td id=\"calendar_today\">";
  }elseif(($day == date("j",$_GET['tstamp'])) && (isset($_GET['tstamp']))){
    $css = "<td id=\"calendar_get\">";
  }else{
    $css = "<td>";
  }

  $first_day_move = "";
  if($day == 1){
    $first_day_move = $first_day_start;
  }
   
  if((($day <= date("j") && ($month <= date("n")))) || ($month < date("n"))){
    echo $first_day_move.$css."<a href=\"?tstamp=$curr_day_start&amp;page=events\">$day</a></td>\n";
  }else{
    echo $first_day_move.$css.$day."</td>\n";
  }

  if($day == 1){
    if($first_day == 0){
      $r = 7;
    }else{
      $r = $r + $first_day - 1;
    }
  }

  $c = $r % 7;
  if(($c == 0) && ($day != date("t"))){
    echo "</tr><tr>\n";
  }elseif(($c == 0) && ($day == date("t"))){
    echo "</tr>\n";
  }elseif(($day == date("t")) && ($c == 0)){
    echo "</tr>\n";
  }

  $r++;
}

echo "<tr><td class=\"calendar\"><a href=\"?tstamp=".($curr_month_first_day_start - 1)."#cal\"><</a></td><td class=\"center\" colspan=\"5\"><span>".date("F", $curr_month_start)." - ".$year."</span></td><td class=\"calendar\"><a href=\"?tstamp=".($curr_month_last_day_end + 1)."#cal\">></a></td></tr>\n";
echo "</table>\n";

?>
peta
Profil
http://peter-mlich.wz.cz/x/ww/js/jspriklady.htm
minikalendar, kalendar

tutorial je asi takovy, ze
spocitas pocet dni v mesici
m0 = new Date(y,m, 1);
m1 = new Date(y,m+1,1);
days1 = Math.round((m1.getTime()-m0.getTime())/86400000);
a zjistis, ktery den v tydnu je prvniho
w0 = m0.getDay();
mno, a pak uz jen
od 0 do dne prvniho vykreslis nic
od dne prvniho po 7 dnech vykreslis pocet dni
na konci vykresli prazdne policka po 7dmy den.

tak mne napada, ze mozna jednodussi si predem pripravit prazdne pole o Math.ceil((w0+days1)/7)*7 polickach a do nej doplnit cisla. Jednoduseji by se to vykreslovalo scriptem nez to mam ja.
Filips
Profil
LamiCZ
A mohl bys poskytnout i tu složitější verzi? Díky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0