2013-03-17 2 views
0

У меня сложная задача отображать часы для разных мест. Я хотел бы объединить случаи, когда часы начинаются один вечер и заканчиваются следующим утром. Кто-нибудь знает, как я могу изменить сценарий ниже, чтобы заставить его работать правильно?Объединить элементы таблицы MySQL с PHP

все результаты с одним и тем же place_id должны быть объединены там, где это возможно, time_group_id не имеет никакого значения для этого. Если время заканчивается в 11:59, то я хотел бы предположить, что оно будет продолжено на следующее утро.

Мой токовый выход из таблицы, как это:

пн - чт: 11:00 вечера до 11:59 вечера

Вт - Пт: 12:00 утра до 2:00 утра

Я хотел бы, чтобы выглядеть следующим образом:

пн - чт: 11:00 вечера до 2:00 утра

У меня есть таблица MySQL, который выглядит следующим образом:

enter image description here

Мой 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 />'; 
} 

?> 

ответ

0

Вы могли бы хотеть думать о том, просто добавив еще один столбец для "конца" чтобы облегчить вашу жизнь. это будет даже предлагает возможность перехода от мо 01:00 до 00:55 мо в одном наборе данных

(и mysql_ * осуждаются. использовать PDO)

+0

или преобразовать конечное время «время, так как -start-time "в качестве интервала. из которого вы можете легко вычислить конец времени – beercan

Смежные вопросы