Gem det hele i databasen.
Du vil have en "Opgaveskabelon"-tabel og en "Opgave"-tabel, hvor der er en en->mange relation.
Når brugeren angiver, at de ønsker, at en opgave skal gentages, skal du oprette en "Opgaveskabelon"-post og derefter oprette så mange "Opgaver", som brugeren har angivet (tillad ikke en bruger at oprette opgaver for langt ude i fremtiden). Hver opgave er knyttet til opgaveskabelonen via en fremmednøgle. Ideen er, at SQL vil være mere effektiv til at administrere disse poster end at prøve at gøre alt dette i kode baseret på én skabelon. På denne måde vil du have flere muligheder, når du sorterer og filtrerer dine data. Når alt kommer til alt, er det nemmere at skrive en SQL-forespørgsel end at skrive, teste og vedligeholde en PHP-funktion, der manipulerer dataene.
Nogle andre tips, jeg vil give dig, er:
- Prøv at få en masse information i din "Opgaveskabelon"-post. Behold antallet af opgaver, skabelonen dækker, datoen for den sidste opgave slutter, den tid, der er forløbet mellem den første opgave og den sidste osv.. Disse "metadata" kan hjælpe med at spare dig forespørgselstid, når du ønsker at sortere og filtrere opgaver.
- Sæt et indeks i feltet Dato og FK, dette vil også hjælpe med forespørgselstiden.
- Jeg har lige bygget to kalenderapps på arbejdet, som blev ret godt modtaget af cheferne. Jeg brugte "FullCalendar" JQuery plugin (http://arshaw.com/fullcalendar/). Jeg brugte JQuery AJAX til at håndtere de fleste af mine begivenheder, og det havde indbygget understøttelse af måned-, dag- og ugevisning.