すべてをデータベースに保存します。
「タスクテンプレート」テーブルと、1つ->多くの関係がある「タスク」テーブルが必要です。
ユーザーがタスクの再発を希望することを示したら、「タスクテンプレート」レコードを作成してから、ユーザーが指定した数の「タスク」を作成します(ユーザーがタスクを作成しすぎないようにします)。各タスクは、外部キーを介してタスクテンプレートにリンクされています。 SQLは、1つのテンプレートに基づくコードでこれをすべて実行しようとするよりも、これらのレコードをより効率的に管理できるようになるという考え方です。このように、データを並べ替えたりフィルタリングしたりするときに、より多くのオプションがあります。結局のところ、SQLクエリの記述は、データを操作するPHP関数の記述、テスト、および保守よりも簡単です。
私があなたに与える他のいくつかのヒントは次のとおりです:
- 「タスクテンプレート」レコードで多くの情報を取得してみてください。テンプレートがカバーするタスクの数、最後のタスクが終了する日付、最初のタスクと最後のタスクの間の経過時間などを保持します。この「メタデータ」は、並べ替えやフィルタリングを行うときにクエリ時間を節約するのに役立ちますタスク。
- [日付とFK]フィールドにインデックスを付けると、時間のクエリにも役立ちます。
- 上司に非常に好評だった2つのカレンダーアプリを職場で作成しました。 「FullCalendar」JQueryプラグイン(http://arshaw.com/fullcalendar/)を使用しました。ほとんどのイベントを処理するためにJQueryAJAXを使用し、月、日、週のビューのサポートが組み込まれていました。