在一天的特定时间内禁用项目

时间:2012-07-09 00:42:34

标签: php mysql time restrictions

我有一个基于请求的网站,用户可以请求项目,我想在一天中的某些时段限制某些​​请求。

例如,用户只能在下午5点到晚上8点之间请求item5。剩下的时间它都不可用。

我的网站是PHP,带有MySQL后端。

理想情况下,我会喜欢我可以使用项目ID调用的函数,该函数将检查数据库中的时间值并返回true或false值。

如果有人有一些示例代码,我会非常感激,我已经尝试过在PHP中按时阅读,但它却让我感到头疼。

3 个答案:

答案 0 :(得分:1)

这假设数据库在项表中有两列,名为available_startavailable_end。假设这两个都是DATETIME。

function isItemAvailableNow(item_id){
    # Globals are bad but this gets the point across
    global $db;

    # Get the item from the database
    $result = mysql_query("SELECT * FROM items WHERE id = " . mysql_real_escape_string(item_id, $db) . ";");
    $row = mysql_fetch_assoc($result);

    # Pull the beginning and ending availablity time out of the database result
    $available_start = $row['available_start']
    $available_end   = $row['available_end']

    # Get the current time in the same format as the MySQL DATETIME type
    $now = date('%Y-%m-%d %H:%i:%s');

    return ($now >= $available_start) && ($now <= $available_end);
}

此代码尚未经过测试,我做了一些假设(比如你正在使用MySQL),但这应该可以让你开始。

你也想考虑时区,但这是另一个讨论。

答案 1 :(得分:1)

time()date(),也许mktime()就是您所需要的。只需将当前时间与您允许/禁止查看内容的时间范围进行比较

PHP date() manual - 这真是一个强大的功能

还有一个时区问题,您可以考虑

答案 2 :(得分:0)

您可以使用time()数据类型在数据库中弹出startTime和endTime字段。在这些字段中,输入它们可用的时间以及何时必须返回的时间。

然后,查询获取可用项目是一件简单的事情。

tableAvailability
|--------------------------------|
| id     | availStart | availEnd |
|--------------------------------|
| 1      | 15:00:00   | 18:00:00 |
| 2      | 12:00:00   | 12:30:00 |
|--------------------------------|


$startTime='15:30:00';
$requiredTime=2; // Showing Hours for example

$sql="
select
    id
from
    tableAvailability
where
    ".$startTime." >= availStart
    and addTime('".$startTime."', '".$requiredTime.":00:00')<availEnd";