Создание календаря на PHP

#php #html #calendar

#php #HTML #Календарь

Вопрос:

Недавно кто-то очень любезно дал мне некоторый код для создания таблицы, имитирующей расписание в HTML — ниже приведен код

     function make_row( $slot , array $list )
   {
      $output = '';
      $output .= '<tr><td>' . $slot . '</td>';
      for ( $i = 1; $i <= 7 ; $i   )
      {
         $details = 'amp;nbsp;';
         if ( isset($list[ $i ]) )
         {  
            $details = $list[ $i ];
         }
         $output .= '<td>' . $details . '</td>';
      }
      $output .= '</tr>';
      return $output;
   }

   $timeslot = '';
   $item = array();
   while ($eventrow = mysql_fetch_array($sqlevents)) 
   {
      $timeslot = $eventrow['PreferredStart'];
      $day = (int)$eventrow['idDay'];

      if ( !is_array( $item[ $timeslot ] ) )
      {
         $item[ $timeslot ] = array();
      }

      $item[ $timeslot ][ $day ] = $eventrow['EventDetails'];
   }

   foreach( $item as $slot => $list )
   {
      echo make_row( $slot, $list );
   }
  

Однако настройки моей таблицы DB изменились. Теперь у меня есть получасовые интервалы вместо полных. Таблица отображается правильно, но я пытаюсь убедиться, что если кто-то записывается на прием, то в календаре отмечается весь блок, а не только время начала. Может ли кто-нибудь помочь мне добавить время окончания, а также временные интервалы между ними?

Большое спасибо, Бретт

Комментарии:

1. где ваш HTML-код?? лучше вставить весь код в ideone.com или codepad.org или pastebin.com и приведите ссылку сюда

2. Привет, diEcho, за пределами этого блока кода у меня есть только <таблица>, а затем <th> поля и </table> в конце. SQL, который я использую для его заполнения, приведен ниже в ответе эйканала.

Ответ №1:

На этот вопрос довольно сложно ответить, не зная структуры базы данных или sql-запроса, который был создан $sqlevents , но похоже, что временной интервал просто берется прямо из базы данных:

 $timeslot = $eventrow['PreferredStart'];
  

Вы могли бы изменить это, найдя время окончания (я предполагаю, что оно указано PreferredEnd в базе данных, но вам, очевидно, придется проверить это самостоятельно, поскольку я не знаю схему вашей базы данных) и добавив их вместе:

 $timeslot_start = $eventrow['PreferredStart'];
$timeslot_end   = $eventrow['PreferredEnd'];   // I'm gonna assume this is right

$timeslot = $timeslot_start.'-'.$timeslot_end; // Make a new field combining both
  

Теперь в вашей $timeslot переменной должно быть время начала и окончания.

Комментарии:

1. Привет, эйканал, спасибо за совет, но я не думаю, что это совсем правильно. PreferredEnd действительно является моим временем окончания, но мне нужны временные интервалы, вызываемые для генерации полей времени на оси y таблицы. Мой SQL приведен ниже

2. $sqlevents = mysql_query(«ВЫБЕРИТЕ * ИЗ временных интервалов СЛЕВА ПРИСОЕДИНИТЬСЯ К событию НА временных интервалах.idTimeslot = Событие. PreferredStart И idTeacher = ‘$idTeacher’, ГДЕ временные интервалы.idTimeslot <> 0»);

3. Думаю, я понимаю, о чем вы говорите, но я не могу по-настоящему визуализировать это, не увидев страницу в действии или хотя бы скриншот. Из опубликованного вами кода не видно, как это должно отображаться; я полагал, что это просто вывод, например, «10:00-11:00, прочее».

4. Теперь мне нужно, чтобы таблица была заполнена КАК временем начала, так и временем окончания, а также временными интервалами между ними. Итак, в моей таблице временных интервалов, 07:00 = 1, 07:30 = 2, и т.д. Вплоть до 22:30 = 32.

5. Это правильный eykanal, в таблице указаны дни сверху, временные интервалы (07:00, 07:30…) вниз по левой стороне. В настоящее время я могу заполнить одно «поле», так что, скажем, в понедельник в 7 утра будет сказано что-то еще, но я не могу указать время окончания работы. если я хочу столбец понедельник, с 7 утра до 9 утра, чтобы все говорили вещи, я не могу этого сделать в настоящее время.