[英]PHP MYSQL Creating events with no recurring end date for jquery calendar
[英]Creating recurring calendar events in PHP/MySQL
我正在嘗試創建一個包含重復事件(例如每周或每月)的事件日歷,但我無法理解它。 誰能給我一些指點? 這樣做的最佳方法是什么? 任何幫助是極大的贊賞。 謝謝。
我知道這是一個舊帖子,但我也在想同樣的事情。
我喜歡關於使用多個表來做這件事的人的解決方案,但實際上這一切都可以從一張表上完成。
使用以下數據創建一個表...
event_title event_text event_image and_other_fields_about_event recur_code (text) recur_mode (integer) start_date (date) end_date (date) recur_end_date (date)
recur_mode 可以有三種狀態 - 0 = 不重復 1 = 重復並有結束日期 2 = 正在進行但沒有結束日期(例如,如果您想將 1 月 1 日之類的內容添加為元旦)
如果日期重復,recur_code 將在其中存儲 NULL 或代碼。 應該在那里使用的代碼是 PHP DateInterval 代碼(即 1 年的 P1Y 或 P3M(3 個月)或 P7D(7 天)等) - 如果您想稍微縮小數據,您可以砍掉初始'P' 並稍后將其添加回來,因為最初的 'P' 始終是 P,它代表 Period 所以“Period 3 Months”“Period 7 Days”等。
然后當您從數據庫中檢索數據時 - 您使用以下搜索檢索所有數據
( end_date >= CURDATE () ) OR ( ( recur_mode = 1 ) AND ( recur_end_date >= CURDATE () ) ) OR ( recur_mode = 2 )
(請注意,這不是正確的 SQL - 它只是您需要的 or 語句的基本示例)
然后,一旦您檢索到數據,請使用帶有 while 循環和 DateInterval 的 PHP 來增加 start_date,直到您再次出現下一次,同時確保如果 recur_mode 設置為 1,則開始日期不在 recur_end_date 之后。
全部在一張表中完成 - 如果您想要一個輸入表單來放置代碼,那么使用帶有 dateinterval 值的隱藏字段,同時使用各種單選按鈕來選擇間隔 - 然后使用 jQuery onchange 更新隱藏值新的選擇器值。
創建三個具有如下結構的表:
event
表
-id
-schedule_type
-schedule_id
-title
etc.
schedule
-id
-event_id
-datetime
schedule_recurring
表
-id
-event_id
-date
-time
在您的event
表中,schedule_type 字段將為 0 或 1,這將向應用程序指示調度信息存儲在哪個表中,以及如何解釋該信息。
非重復事件將存儲在schedule
,日期時間:2011-09-06 00:00:00,重復事件將存儲在schedule_recurring
,日期:'every 1st Monday',時間:09:30, 12:20(如果該事件在每個月的第一個星期一發生兩次)。
也許這會幫助你開始!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.