フロントエンドとしてFullCalendarを使用してカレンダーシステムを構築しています。バックエンドはMySQL/PHPになります。iCalバックエンド - 定期的な日付
これは、アプリケーションによって生成され、挿入されたユーザーの公開予定リストを格納します。これらのアポイントメントは、同じ日に開始され、終了する単一のイベントになります。さらに、ユーザーは個人的なコミットメントのために、カレンダーに自分の不可能を記入することができます。後者の機能には、定期的なイベントの使用が必要です。ホイールを再発明するのではなく、iCalに基づいた構造を使用して検討してきました。この投稿は、データベース構造の決定に非常に役立ったical-field-list-for-database-schema-based-on-ical-standardでした。
個人用の定期的な予定を保存するために必要なデータを入力するためのアプリケーションフォームを作成しました。フォームを提出すると、データはAjax経由でサーバーに送信されます。私は、ユーザーが入力したパラメータに基づいて、ネイティブ形式またはRRULEを使用して、繰り返し日付の配列を生成する優れたPHPスクリプトを発見しました。
私は、これらの定期的な日付を保存/取得するための最良の方法は何か分かりません。アプリケーションは、パブリックとプライベートの日付を含む、ユーザーのカレンダービューをレンダリングできる必要があります。アプリケーションはまた、たとえば、所与の時間/日付期間に無料である可能性があるすべてのユーザーを返すことができる必要があります。
すべてのイベントをiCal形式で保存し、必要に応じてイベントを取得するだけで十分ですか?私が予見している問題は、繰り返されるイベントは、即座にそのパラメータを拡張する必要があるため、簡単に検索できないということですか?私は、それを作成した元のRRULEへの参照を元に、(生成された)個々のイベントの2番目のテーブルを作成することを検討していました。私は、ユーザーが次の100年間毎日イベントに参加できないようにするために、ユーザーが入力する可能性のある定期的な日付の数を制限することを検討します。私は、このアプローチは、もともと反復ルールによって作成された個々のイベントを編集することにもなると私は思う。
これは良いアプローチですか、それとも良い方法がありますか?
その後CREATE TABLE RecurringAppointments (
startdate DATE NOT NULL,
enddate DATE,
freq INT NOT NULL, -- contains #days between each occurrence
-- etc.
)
は、与えられたthedate
で発生するすべてのそのような予定を取得するには:次の行に沿って表についてどのように
私はこのサイトを検索しましたが、有益な情報がたくさんあるこのリンクされたページを見つけることができませんでした - ありがとう。私は、2テーブルのアプローチは正しいと思いますが、それは今度はイベントテーブルを生成するルルルです。私は決して終わらない(または長時間走っている)出来事や、それらを制限するか、周期的に(おそらくcronの仕事で)展開するかどうかを考える必要があります。カレンダーは、作成したユーザーだけではなく、システムによって「空きスロット」を見つけるために照会する必要があるため、関連する時間枠をカバーするすべてのユーザーのためにルルールを完全に拡張する必要があります( s)。 – Dave