#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 утра, чтобы все говорили вещи, я не могу этого сделать в настоящее время.