Autor | Zpráva | ||
---|---|---|---|
amorekj Profil |
#1 · Zasláno: 11. 1. 2014, 11:27:39
Dobrý den,
chtěl bych se zeptat, jak vytvořím zapisování do kalendáře událostí (PHP + MySQL) tak aby si zapisovatel zvolil od a do jakého dne - skript by si to nějakým způsobem dopočítal. Poté po zapsání by se událost v kalendáři označila pro ostatní (jak to přidat do skriptu s kalendářem). Použitý kalendář: <?php // 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); // 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 href='?month=".($prevM)."&year=".($prevY)."'><<</a>"; $next = "<a href='?month=".($nextM)."&year=".($nextY)."'>>></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 "<table border=1 align=center id=calendar>"; echo "<tr><th>$prev</th><th colspan=5> ".$cz_months[$title]." $year</th><th>$next</th></tr>"; echo "<tr><td width=42>Pon</td><td width=42>Út</td><td width=42>Stř</td><td width=42>Čt</td><td width=42>Pá</td><td width=42>So</td><td width=42>Ne</td></tr>"; $day_count = 1; echo "<tr>"; // zde prave zjistime pocet prazdnych bunek pred 1 dnem v mesici while ( $blank > 0 ) { echo "<td></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 == $day) { echo "<td class='today'><b><a href='?year=$year&month=$month&day=$day_num'>$day_num</a></b></td>"; } else { echo "<td class='days'><a href='?year=$year&month=$month&day=$day_num'>$day_num</a></td>"; } } else { echo "<td class='days'>$day_num</td>"; } $day_num++; $day_count++; if ($day_count > 7) { echo "</tr><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></table>"; ?> Děkuji za Vaše odpovědi. |
||
Alphard Profil |
#2 · Zasláno: 11. 1. 2014, 12:52:25
Ten váš dotaz je rozsáhlejší, celé řešení sem nikdo asi psát nebude. V principu nějak takto:
1. tabulka s událostmi a se sloupci od a do – vložení jednoduchý insert, 2. při výpisu vybrat události daného měsíce – where konec_udalosti >= prvni_den_mesice and zacatek_udalosti <= posledni_den_mesice ,
3. na straně PHP si vyfiltrovat, která událost patří ke kterému dni. |
||
Časová prodleva: 12 let
|
0