Autor | Zpráva | ||
---|---|---|---|
Scrash6 Profil * |
#1 · Zasláno: 1. 3. 2011, 14:01:48
Dobrý den, potřeboval bych poradit s jednoduchým kalendářem.
Nechápu, proč kalendář funguje pouze od ledna 1902 až do ledna 2038, když mám v proměné $_GET["month"] Neví někdo co v tom vězí ? // odkazy na konkretni dny $selected_days[2009][2][24] = true; $selected_days[2009][2][27] = true; $selected_days[2009][3][5] = true; $selected_days[2009][3][17] = true; $selected_days[2009][4][20] = true; // prvotni inicializace, nastavime aktualni cas, mesic a rok $date = time(); $day = date('d', $date); $month = date('m', $date); $year = date('Y', $date); $d = (int) date("d"); $m = (int) date("m"); $y = (int) date("Y"); echo "Dnes má svátek <strong>".$svatek[$d][$m]."</strong>"; // pokud v GETu existuje mesic ci rok, tak "aktualni" mesic a rok je ten z URL if ($_GET["year"]) $year = (int) $_GET["year"]; if ($_GET["month"]) $month = (int) $_GET["month"]; // pro dalsi zobrazeni potrebujeme prvni den v mesici, pocet dni v mesici ... $first_day = mktime(0,0,0,$month, 1, $year); $title = date('n', $first_day); $day_of_week = date('D', $first_day); $days_in_month = date('t', $first_day); // ceske mesice $cz_months = array( 1 => "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" ); $prevY = $nextY = $year; $prevM = $nextM = $month; // nastaveni odkazu pro predchozi a nasledujici mesic / rok if ($month - 1 < 1) { $prevM = 12; $prevY--;} else {$prevM = $month - 1;}; if ($month + 1 > 12){ $nextM = 1; $nextY++;} else {$nextM = $month + 1;}; $prev = "<a class='url' href='?month=".($prevM)."&year=".($prevY)."'><img src='".IMAGES."prew.png' alt='Předchozí' border='0'></a>"; $next = "<a class='url' href='?month=".($nextM)."&year=".($nextY)."'><img src='".IMAGES."next.png' alt='Další' border='0'></a>"; // timto si vyplnime v kalendari prazdne bunky, 1 den v mesici a prvniho neni vzdy pondeli ... $emptyTD = array("Mon" => 0, "Tue" => 1, "Wed" => 2, "Thu" => 3, "Fri" => 4, "Sat" => 5, "Sun" => 6); $blank = $emptyTD[$day_of_week]; // vykresleni kalendare echo "\n<table align='center' class='calendar'>\n"; echo "<tr><td class='url-bg'>".$prev."</td><th colspan='5'> ".$cz_months[$title]." $year</th><td class='url-bg'>$next</td></tr>\n"; echo "<tr>\n<td class='days-name'>Pondělí</td>\n<td class='days-name'>Úterý</td>\n<td class='days-name'>Středa</td>\n<td class='days-name'>Čtvrtek</td>\n<td class='days-name'>Pátek</td>\n<td class='days-name'>Sobota</td>\n<td class='days-name'>Neděle</td>\n</tr>"; $day_count = 1; echo "<tr>"; // zde prave zjistime pocet prazdnych bunek pred 1 dnem v mesici while ( $blank > 0 ){ echo "<td class='old-days'></td>"; $blank--; $day_count++; } $day_num = 1; // veskere dny v kalendari while ($day_num <= $days_in_month){ if (!isset($selected_days[$year][$month][$day_num])){ if($day_num == $d AND $_GET["month"] == $m AND $_GET["year"] == $y){ echo "<td class='today'>".$day_num."<br>\n<span class='svatek'>".$svatek[$day_num][$_GET["month"]]."</span></td>"; }else{ echo "<td class='days'>".$day_num."<br>\n<span class='svatky'>".$svatek[$day_num][$_GET["month"]]."</span></td>"; } } $day_num++; $day_count++; if ($day_count > 7){ echo "</tr>\n<tr>"; $day_count = 1; } } // timto zajistime spravne zobrazeni kalendare a dopocitani prazdnych bunek while ($day_count >1 && $day_count <=7){ echo "<td></td>"; $day_count++; } echo "</tr>\n</table>\n\n"; |
||
jenikkozak Profil |
#2 · Zasláno: 1. 3. 2011, 14:25:18
Scrash6:
„Nechápu, proč kalendář funguje pouze od ledna 1902 až do ledna 2038“ Jde o omezení funkce date(). Určitě potřebujete větší rozsah kalendáře? |
||
Scrash_ Profil * |
#3 · Zasláno: 1. 3. 2011, 15:04:55
Aha, větší rozsah nepotřebuji, jen mě zajímalo v čem byl problém.
Díky za odpověď. |
||
Časová prodleva: 13 let
|
0