我正在尝试使用MySQL表格中的数据制作时间表,该表格包含每个事件的日期,开始日期和开始时间。
我现在的逻辑是这样的。
使用星期一查找所有事件,将数组放入星期一 查找星期二的所有活动,列入星期二的数组
等
然后我为每个阵列上的每个循环运行一个以遍历当天的每个时间段(9-5),如果它与当前事件匹配,则创建一个表格单元格,如果不是创建并清空单元格,最后如果事件持续时间长于1 slott然后不要放任何东西。这是我上面的代码:
function createTableEvent($day,$previousfinish)
{
$completeDay = '';
$day = explode(',',$day);
$ev = $day[0];
$start = $day[1];
$end = $day[2];
$event = "<div class=\"table_event\">$ev<br>Starts:$start<br>Ends:$end<br></div>";
$times= array('09','10','11','12','13','14','15','16','17');
//TIMES
foreach ($times as $time)
{
if($start == $time.":00" && $previousfinish == !)
{
$completeDay .= "<td class=\"$time\" colspan=\"$end\">
<div class=\"table_event\">$event</div></td>";
$previousfinish = $end;
}
else if($previousfinish > 1
{
}
else
{
$completeDay .= "<td class=\"$time\" colspan=\"1\"></td>";
}
}
return $completeDay;
}
我想跳过单元格的原因如果它超过1是因为如果一个事件运行超过一个块,我将列跨度设置为事件的持续时间,因为它不应该将一个单元格放入下次如果前一个事件超过一个区块。
我的输出适用于单小时活动,但不是当一天说1小时活动和第2小时活动时。我的代码仍然会为应该为空的时间创建额外的单元格。
任何输入或帮助都非常有用
答案 0 :(得分:1)
我注意到的显而易见的事情是:
我注意到的其他事情是,如果满足最后一个条件,你会把事件时间而不是事件名称(就像你在第一时间所做的那样)。
我试图进一步调查这个问题,但是有点困难,因为我不知道在参数中传递给函数的数据是什么。
我建议您解决上述问题并查看是否可以解决您的问题。 如果没有,如果你提供一个传递给函数的样本数据,我很乐意进一步研究这个问题。
另外,如果你发现它更好,我会重新安排代码以便于阅读 -
<?php
function createTableEvent($day, $previousfinish)
{
$completeDay = '';
list ($ev, $start, $end) = explode(',',$day);
$event = "<div class=\"table_event\">$ev<br>Starts:$start<br>Ends:$end<br></div>";
//TIMES
foreach (array('09','10','11','12','13','14','15','16','17') as $time)
{
if ($start == ($time.":00") && $previousfinish == !)
{
$completeDay .= "<td class=\"$time\" colspan=\"$end\">
<div class=\"table_event\">$event</div></td>";
$previousfinish = $end;
}
else if($previousfinish > 1)
{
}
else
{
$completeDay .= "<td class=\"$time\" colspan=\"1\"></td>";
}
}
return $completeDay;
}
?>