在创建时间表时遇到问题

时间:2012-03-17 13:29:09

标签: php mysql

我正在尝试使用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小时活动时。我的代码仍然会为应该为空的时间创建额外的单元格。

任何输入或帮助都非常有用

1 个答案:

答案 0 :(得分:1)

我注意到的显而易见的事情是:

  • 第二个if语句(在'else'之后)的条件不是 然后关闭')'。
  • 我不知道是否需要,但没有命令 只要符合这一条件,
  • 在for循环内的第一个条件中,你比较 $ previousfinish参数为'!'。这真的是你想要做的吗? 你的意思是将它与'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;
}
?>