我目前正在为我的客户开发一个事件管理系统,但我被困在一个地方。
对于每个事件,我们需要指定事件发生的本地。这也应该得到验证。
如果事件没有与数据库中的另一个重叠,我需要能够在保存之前添加事件和检查。例如,我在我的数据库中收到了这些事件:
+------------+------------+------------+----------+----------+
| EVENT NAME | DATE | BEGIN_TIME | END_TIME | LOCAL_ID |
+------------+------------+------------+----------+----------+
| Test 1 | 12/11/2013 | 11:00:00 | 12:00:00 | 250 |
| Test 2 | 12/11/2013 | 10:30:00 | 11:30:00 | 150 |
+------------+------------+------------+----------+----------+
现在,如果我想在本地11:00:00
中添加12:00:00
到150
的事件,它应该会给我一个错误,因为已经有10:30
到11:30
的事件range()
与另一事件同时发生。但是,如果我添加相同的事件,但对于本地200(例如),它应该工作,因为在本地同时没有其他事件......
我尝试使用PHP {{1}}并使用数组方法计算时间和日期,但它不起作用。我不知道怎么检查。
注意:我正在使用Joomla! 3.1如果需要,我可以编写自己的插件。
答案 0 :(得分:2)
您可以通过SQL检查 - 执行查询以检查与local_id
匹配的事件,这些事件的事件安排在 建议日期之间。
例如
SELECT
1
FROM
events
WHERE
`local_id` = :local_id
AND
`date` = :date
AND
(
(`begin_time` BETWEEN (:start) AND (:end)
OR
(`end_time` BETWEEN (:start) AND (:end)
)
如果您得到任何结果,那么您就知道存在匹配事件
答案 1 :(得分:0)
如果我正确理解您的问题,我相信您应该发出一个SQL查询,以使用SQL关键字BETWEEN检查您的范围内是否存在行。是的,您的BEGIN和END时间列需要是本机日期格式而不是字符串。