У меня сложная задача отображать часы для разных мест. Я хотел бы объединить случаи, когда часы начинаются один вечер и заканчиваются следующим утром. Кто-нибудь знает, как я могу изменить сценарий ниже, чтобы заставить его работать правильно?Объединить элементы таблицы MySQL с PHP
все результаты с одним и тем же place_id должны быть объединены там, где это возможно, time_group_id не имеет никакого значения для этого. Если время заканчивается в 11:59, то я хотел бы предположить, что оно будет продолжено на следующее утро.
Мой токовый выход из таблицы, как это:
пн - чт: 11:00 вечера до 11:59 вечера
Вт - Пт: 12:00 утра до 2:00 утра
Я хотел бы, чтобы выглядеть следующим образом:
пн - чт: 11:00 вечера до 2:00 утра
У меня есть таблица MySQL, который выглядит следующим образом:
Мой PHP скрипт:
<?php
//connect
$day_times = array();
$days_map = array(
'monday' => 'Mon',
'tuesday' => 'Tue',
'wednesday' => 'Wed',
'thursday' => 'Thu',
'friday' => 'Fri',
'saturday' => 'Sat',
'sunday' => 'Sun'
);
$query = mysql_query("SELECT distinct day, time_group_id, start_time, end_time FROM times
WHERE place_id = '80' ORDER BY id ASC");
while ($row=mysql_fetch_assoc($query)) {
$start_time = stripslashes($row['start_time']);
$end_time = stripslashes($row['end_time']);
$start_time = strtotime("$start_time");
$end_time = strtotime("$end_time");
$day = strtolower($row['day']);
$day_times[$row['time_group_id']]['times'][] = $start_time;
$day_times[$row['time_group_id']]['times'][] = $end_time;
$day_times[$row['time_group_id']]['days'][] = $day;
}
foreach ($day_times as $timegroup) {
$first_day = array_shift($timegroup['days']);
$last_day = array_pop($timegroup['days']);
$times = $timegroup['times'];
echo $days_map[$first_day] . ' - ' . $days_map[$last_day] . ': ';
echo date('g:ia', min($times));
echo ' to ';
echo date('g:ia', max($times));
echo '<br />';
}
?>
или преобразовать конечное время «время, так как -start-time "в качестве интервала. из которого вы можете легко вычислить конец времени – beercan