2009-02-27 10 views
2

私はsubmitted this previouslyを持っていますが、誰かがそれを投票して既に答えられていると言いますから、誰も答えません。再現のための簡単で実用的なPHPロジック

私は同様の記事がここにあります知っている:

しかし、彼らは、ロジックの、実用的なシンプルかつ現実世界例えばある私の要求に応答しませんPHPとMySQL以外のフレームワークやツール/スクリプトを使用することなく、定期的なカレンダー設定を行うことができます。

私はこの記事http://martinfowler.com/apsupp/recurring.pdfが良好であることを同意しませんが、私がそれを理解することができないように抽象的です。

私はこれは私自身の白いクジラである、と私はいくつかの点でそれを把握しますその他の「この行っているシステム」がいることを知っている - 私は道に沿っていくつかの助けをしたいと思いますが。

PHPとMySQLを使用して定期的なカレンダーを作成するにはどうすればいいですか?

+0

あなたは本当に下向きの投票をしているように見えます。:-) – Swanand

+0

私はあなたにdownvoteしませんが、あなたの質問はとても抽象的で、私はそれを理解できません:)あなたは最初に尋ねたいのですか? – Quassnoi

+0

質問はどのようにデータベースから日付を取得するのですか?(mwfに設定されている場合)「除外」テーブルに一致する日付がない限り、それらの日付だけを表示します他の再発パターン....第1日目(月) – Tim

答えて

1

Fowlerの記事を理解するように努力する必要があります。それは本当にそれをカバーしています。

事実は、これは難しい問題です。 「オンザフライで」ロジックを編集することは、ユーザーが本当にやりたいことではありません。むしろ、彼らはあなたが何をしたいのかを予想し、そのためのルールを提供することをプログラマとして望んでいます。たとえば、月の第2水曜日の計算方法を理解したくないと思っていません。

実際の問題は、MySQLでの再発のモデリングにあります。 Google's specを使用することができます。これはデータベースに保存して、Stack Overflowでカバーすることができます。 Fowlerの作品は、RDBMSで表現できる明確に定義されたクラスの観点から、いくつかの良い出発点を提供しています。

難しい問題です。そして、あなたが成功するためには、あなたをストリームに導くしかありません。私たちはあなたに強制的に飲み込むことはできません。

+0

私はADD Visualデザイナー、コーダーではないので、ファウラーの例は私の頭の上の方法です...私はファウラーを理解するのを助けることができるものは何ですか?もしあなたが仲介者? – Tim

+0

あなたの理解が不足していると感じるところはありますか? OOの原則に精通していませんか?あなたにUML図は外国人ですか?あるいは、あなたが完全にgrokしていない特定の概念はありますか?これらの特定の事柄について質問することは、私たちがあなたを助けるのに役立ちます。 –

+0

まあ、実際の問題は、私が遭遇するほとんどの問題や、私が作成しなければならないスクリプトは、作業中のものを取って休憩するまでの間、それを修正して、私が "それを理解していない"ことを意味すると思います[; o) – Tim

0

実際のカレンダーロジックの実例では、PDAなどを見てください。

私は数年前にイントラネットアプリケーションでカレンダーを作成しなければならず、基本的に私のPalmが定期的なオプションを持っていたものをコピーしました。人々には意味があり、私はそれを成功と判断しました。しかし、それはデータベースに本当のクリーンを保存しませんでした。私のコードは、データが一貫していて、何かが間違って見える場合には、さまざまなルールを使って問題を修正するという慎重なチェックが多数行われました。私がそれを開発していたときに積極的に使用していたのを助けました。 :-)

は限りストレージが行ったように、カレンダーエントリは、定期的なシリーズの一部であったかどう示すフラグを含みました。そうでない場合、それは非繰り返しエントリでした。それがあった場合、それを編集するにはいくつかの選択肢がありました。そのうちの1つは、このエントリでシリーズを壊すことでした。繰返し項目は、個別項目としてデータベースに格納されました。これはパフォーマンス上の理由から行われた一種の非正規化でした。とりわけ、カレンダーをチェックしたい他のコードは、繰り返しアイテムについて心配する必要がないことを意味していました。我々は、シリーズの終了日を常に要求することによって、「ネバネジング」問題を解決しました。

実際に定期的なアイテムを設定するには、さまざまな設定を制御するためにUIでJavaScriptを使用する必要があります。DBのエントリには、反復の範囲(例えば、毎日、毎週、...)、繰り返しステップ(例えば、1週間、2週間、...)および任意のバリエーション(週に1回「毎週月曜日、水曜日、木曜日」)。

最後に、タイムゾーンと夏時間を処理したことを完全に実装していないといういくつかのロジックがありました。シフトを選択的に適用する必要があるため、これは困難です。つまり、一部のカレンダーアイテムは、エンドユーザーのローカル時間に残り、他のカレンダーアイテムは、場所に固定され、夏時間で移動する場合と移動しない場合があります。私はその問題を修正する前にその会社を辞めました。

最後に、他のすべての質問が表示されなかったので、私はこれに返信します。 :-)しかし、PDFを読んで理解してください。

関連する問題