Autor Zpráva
amorekj
Profil
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
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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