Hvala ljudi!
Mislim da će ovo raditi posao. Tabela events ima sledeća polja:
id - integer
name - varchar
year - integer
month - integer
day - integer
weekday - integer (gde je 0 nedelja, a 6 subota)
hour - integer
second - integer
repeat - enum(daily, weekly, monthly, yearly)
Kada se ovako rasloje podaci lako je izvući događaje za određeni dan:
PHP kôd:
// Kucano iz glave, cisto kao demonstracija. Nema nikakvih provera
// i najverovatnije sadrzi greske...
function get_by_date($timestamp) {
$elements = getdate($timestamp);
$where = array(
"(repeat = 'daily' AND day = " . $elements['mday'] . ')',
"(repeat = 'weekly' AND weekday = " . $elements['wday'] . ')',
"(repeat = 'montly' AND month = " . $elements['mon'] . ')',
"(repeat = 'yearly' AND year = " . $elements['year'] . ')'
);
return mysql_query('SELECT id, name FROM events WHERE ' . implode(' OR ' . $where));
} // get_by_date
Ista stvar ide i ako je u igri vreme - samo se dodaju uslovi za sate i sekunde.
Što se mene tiče, ovo zadovoljava potrebe za izradu jednostavnog event kalendara. Možemo tu sada da komplikujemo i dodajemo biweekly i bimonthly podršku, svaka dva sata, raspone gde dođaj može da se proteže na više dana i slične gluposti, ali i ovako kako je će raditi posao većini ljudi.