2012-03-17 2 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 일 2 시간 이벤트 및 2 시간 1 이벤트를 말하는 경우에는 작동하지 않습니다. 내 코드는 여전히 비어 있어야하는 시간에 대한 여분의 셀을 만듭니다.

모든 입력 또는 도움은 매우 유용 할 것이다

답변

1

명백한 것들 I 통지했다 :

  • 이 두 번째의 조건 (오른쪽 '다른'후) 문이 다음에하지 경우 닫는 ')'. 이가 원하는 경우
  • 나는 밖으로 만들 수 없습니다,하지만 루프에 대한 당신이 $ 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; 
} 
?>