Lagra allt i databasen.
Du vill ha en "Task Template"-tabell och en "Task"-tabell där det finns en en->många-relation.
När användaren anger att de vill att en uppgift ska upprepas, skapa en "Task Template"-post och skapa sedan så många "Tasks" som användaren har angett (tillåt inte en användare att skapa uppgifter för långt in i framtiden). Varje uppgift är länkad till uppgiftsmallen via en främmande nyckel. Tanken är att SQL kommer att vara effektivare på att hantera dessa poster än att försöka göra allt i kod baserat på en mall. På så sätt kommer du att ha fler alternativ när du sorterar och filtrerar dina data. När allt kommer omkring är det lättare att skriva en SQL-fråga än att skriva, testa och underhålla en PHP-funktion som manipulerar data.
Några andra tips jag skulle ge dig är:
- Försök att få mycket information i din "Task Template"-post. Behåll antalet uppgifter som mallen täcker, datumet då den sista uppgiften slutar, tiden som förflutit mellan den första uppgiften och den sista, etc.. Denna "metadata" kan hjälpa dig att spara tid för frågor när du vill sortera och filtrera uppgifter.
- Sätt ett index i fältet Datum och FK, detta kommer också att hjälpa till med frågetiden.
- Jag har precis byggt två kalenderappar på jobbet som togs emot ganska väl av cheferna. Jag använde "FullCalendar" JQuery-plugin (http://arshaw.com/fullcalendar/). Jag använde JQuery AJAX för att hantera de flesta av mina evenemang, och det hade inbyggt stöd för månads-, dag- och veckovyn.