2011-07-25 78 views
3

嗨我一直在閱讀很多反覆出現的主題,但對於如何在日曆應用程序中實現此邏輯仍然沒有任何建議。我有這個表:重複發生的事件

id | title | start    | end     | recurring 
1 | test1 | 2011-07-25 08:30:00 | 2011-07-25 10:30:00 | day 
2 | test2 | 2011-07-26 08:30:00 | 2011-07-26 10:30:00 | week 
3 | test3 | 2011-07-26 08:30:00 | 2011-07-26 10:30:00 | month 
4 | test4 | 2011-07-26 08:30:00 | 2011-07-26 10:30:00 | year 

當用戶查看日曆,我有參數發送到一個URL來從數據庫中獲取數據。例如:

月視圖: ​​

周視圖: http://www.domain.com?start=2011-07-25&end=2011-07-29

什麼我是這樣的,到目前爲止:

SELECT * CASE recurring WHEN "day" THEN IF(DATE_FORMAT(CURDATE(),"%j") = DATE_FORMAT(e.start,"%j"),1,0) WHEN "week" THEN IF(DATE_FORMAT(CURDATE(),"%w") = DATE_FORMAT(e.start,"%w"),1,0) END FROM event; 

它只能檢索一次...但如果我查看下週2011-08-01到2011-08-05的日曆,它不會起作用。

我的問題是,如何根據url參數檢索循環事件?任何幫助和建議,非常感謝。

PS:我偶然發現了這個線程:PHP 5.3 DateTime for recurring events,它似乎接近我所需要的,但僅僅是我無法弄清楚我的情況下如何動態地使用我的開始和結束日期時間來實現它。

+1

可能是一個好主意,向我們展示您目前使用從數據庫獲取數據的任何代碼。 –

+0

結束日期是什麼意思?在那之後,經常性日期不再發生?您如何知道重複事件何時不再發生?我不認爲你現在的設計可以適當地處理事件中的復發。 – Jacob

+0

我會編輯您的問題以包含該代碼,以便其他人立即看到它。 –

回答

0

這是一週,如果u改變星期每月等等。它的工作

$sql = "Select form tablename where start > '".$_GET['start']."' and end = '".$_GET['end']."' where recurring = 'week'"

+0

我相信你誤解了我的問題。你的sql語句只能在給定的事件日期檢索一次。我想要的是如果重複設置爲「周」,則檢索「每週」事件。但是,謝謝。 – pakito