检查日期之间的两个日期

时间:2016-08-12 06:54:03

标签: php mysql

我有一张表来存储人才,其结构就像这样

表:talent_leave

id   talent   from_date    to_date
 1    10    2016-09-02  2016-09-04

此条目表示他申请2016-09-02至2016-09-04的假期。 我需要的是显示当天的状态,当他尝试申请另一个具有其中一个日期的日期[2016-09-02,2016-09-03,2016-09-04]

例如:如果他申请2016-09-04至2016-09-06

我的申请应该显示

 2016-09-04 / Planned Leave
 2016-09-05 / Not Planned
 2016-09-06 / Not Planned

我在PHP中有一个解决方案,但速度非常慢 我找到的解决方案是

$plannedLeaveArray=array();
$sql="select from_date and to_date From talent_leave Where talent=10";
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){
    $from_date=$row['from_date'];
    $to_date=$row['to_date'];
    while (strtotime($to_date) >= strtotime($from_date)) {
                $plannedLeaveArray[] = $from_date;
                $from_date = strtotime("+1 day", strtotime($from_date));
            }
}

现在我在数组中获得计划日期

$from_post=$_POST['from'];
$to_post=$_POST['to'];
 while (strtotime($to_post) >= strtotime($from_post)) {
                if (in_array($from_post, $plannedLeaveArray)) {
                      echo $from_post."/".Planned Leave
                 }else{
                      echo $from_post."/".Not Planned
                 }
                $from_post= strtotime("+1 day", strtotime($from_post));
            }

加载需要花费太多时间。如果您有更好的解决方案或建议,那就太棒了。

0 个答案:

没有答案