我有一张表来存储人才,其结构就像这样
表: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));
}
加载需要花费太多时间。如果您有更好的解决方案或建议,那就太棒了。