2012-03-17 5 views
0

Я пытаюсь сделать расписание, используя данные в таблице MySQL, в которой есть день, начало и durtaion каждого события.Не удалось создать расписание

Моя логика в данный момент выглядит следующим образом.

Найти все события с понедельником, положить в массиве для понедельника Найти все события со вторником, положить в массиве для вторнике

и т.д.

тогда я запустить для каждого цикла на каждый массиве идти через каждый временной интервал в день (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, потому что, если событие проходит в течение более чем одного блока, я установить продолжительность столбца продолжительность событие, там для него shhouldnt поместить ячейку в следующий раз, если предыдущее событие было длиннее одного блока.

Мой выход работает для одночасовых событий, однако не в день, когда говорят 1 час и 2-е 1-часовое событие. Мой код по-прежнему делает лишние ячейки для времени, которое должно быть пустым.

Любой вход или помощь будет очень полезна

ответ

1

Очевидные вещи I уведомления были:

  • Второе, если утверждение (сразу после «еще») 's условие не за которым следует закрытие ')'.
  • я не мог разобрать, если это хочет, но нет команды для всякий раз, когда это условие выполнено
  • В первом состоянии внутри для цикла сравнить 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; 
} 
?> 
Смежные вопросы