2012-03-17 15 views
0

私は、各イベントの日、開始時刻および終了時刻を持つMySQLテーブルのデータを使用して時刻表を作成しようとしています。時刻表の作成に問題があります

現時点で私のロジックはこういうのです。

月曜日 の配列に入れ月曜日を持つすべてのイベントは、火曜日

など

のために、アレイに入れ火曜日を持つすべてのイベントは、その後、私は行くために、各アレイ上の各ループのために実行探します(9-5)、それが現在のイベントと一致する場合は、表のセルを作成し、空でないセルを作成し、最後にイベントの持続時間が1スロットより長い場合は、何も入れません。ここでは上記のための私のコードは次のとおりです。

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つのブロックよりも長い場合、次の時間にセルを入れるべきではありません。

私の出力は1時間のイベントでは機能しますが、1日に1,2時間のイベントと2時間の1時間のイベントがあるとは出力されません。私のコードでは、まだ空でなければならない時間の余分なセルが作成されます。

任意の入力やヘルプは非常に有用であろう

答えて

1

I通知があっ明白なもの:

  • 秒(右「他」の後)の文の条件が続い でない場合閉鎖 ')'。
  • これが望まれる場合、私は作ることができませんでしたが、この条件は、あなたがする $のpreviousfinishパラメータを比較するforループ内の最初の条件で
  • を満たされたときに「!」 へのコマンドはありません。これは本当にあなたがしたいことですか? 「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; 
} 
?> 
関連する問題