循环通过日期,直到找到一个免费的

时间:2011-01-16 15:02:00

标签: php

我有一个函数检查我的数据库以查看是否存在日期,如果它存在,我想显示数据库中不存在的下一个日期。

这可能吗?

如果数据库中有日期,我的函数返回1,如果没有,我的函数返回0,我使用codeigniter,但不使用任何内置函数。

它基本上是一个可用性检查器,它允许我们在数据库中输入许多不同的日期,所以调用我的函数我使用

$availcheck = $ci->availability->check_availability_by_date(date('d/m/Y'));

我使用if语句来检查它是否第一次运行它返回一个值,这就是我的拥有方式

if($availcheck > 0){
    // loop through the next dates and run the function again to see if it returns 0
} else {
    echo 'available now';
}

我想我会在当前日期添加1,检查一个,然后再添加1并检查等等。

我只是不确定如何。

干杯,

2 个答案:

答案 0 :(得分:1)

如果我理解你的正确,你的问题是增加一天? 如果是这样我会建议使用纪元或unix time 所以使用mktime将日期转换为unix时间,而不是仅仅添加1天(24 * 60 * 60) 然后转换回d / m / y格式。 您可以使用date功能。

$date = time();  // get current timestamp
while ($availcheck)  // while date IS found in database
{
$availcheck = $ci->availability->check_availability_by_date(date('d/m/Y',$date));
$date = $date + (24*60*60);  // add one day
}
$date = $date - (24*60*60);  // reduce one day
echo date('d/m/Y',$date);  // prints the first date that is not in the DB

答案 1 :(得分:1)

这个SQL代码对我有用。     $ today = date(“Y-m-d”); //今天

$sql = "SELECT date FROM calendar WHERE date>'{$today}' AND date<='2100-12-31' AND date='0000-00-00' LIMIT 1";

由于您无法确定结束日期,因此可以进行2100测试。