2012-03-17 43 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; 
} 
?> 
相關問題