我目前正在为我的客户开发一个事件管理系统,但我被困在了一个地方。
对于每个事件,我们需要指定事件发生的本地位置。这也应该得到验证。
我需要能够添加一个事件,并在保存之前检查该事件是否与数据库中的另一个事件重叠。例如,我在数据库中得到了这些事件:
+------------+------------+------------+----------+----------+
| 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 |
+------------+------------+------------+----------+----------+
现在,如果我想在本地150
中添加从11:00:00
到12:00:00
的事件,它应该会给我一个错误,因为已经有一个从10:30
到11:30
的事件与另一个事件处于同一时间。但是,如果我添加相同的事件,但对于本地200(例如),它应该有效,因为在本地中没有其他事件同时发生。。。
我尝试使用PHP range()
和数组方法计算时间和日期,但没有成功。我不知道该怎么查。
注意:我正在使用Joomla!3.1,如果需要的话,我可以编写自己的插件。
您可以通过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)
)
如果你得到任何结果,那么你就知道有一个匹配的事件
如果我正确理解您的问题,我认为您应该使用SQL关键字BETWEEN发出SQL查询,检查您的范围内是否存在行。是的,BEGIN和END时间列需要是本机日期格式,而不是字符串。