2012-03-17 53 views
0

我正在尝试使用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小时事件和第2小时事件时。我的代码仍然使应该为空的时间的额外单元格。

任何输入或帮助将是非常有用的

回答

1

明显的事情我通知如下:

  • 第二if语句的条件(“其他”后右)是不是 后跟一个关闭')'。
  • 我不能让出来,如果这是想要的,但每当这个条件被满足
  • 在第一个条件中的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; 
} 
?> 
相关问题