0

いろいろな場所の時間を表示するという難しい仕事があります。ある夜に始まり、翌朝に終わる場合を組み合わせたいと思います。これを正しく機能させるために、以下のスクリプトを変更する方法を知っている人はいますか?

同じplace_idを持つすべての結果は、可能な場合は組み合わせる必要があります。time_group_idはこれに意味がありません。時間が11時59分に終わったら、翌朝まで続くと思います。

このようなテーブルからの私の現在の出力:

月〜木:午後11時から午後11時59分

火-金:12:00amから2:00 am

私はそれをこのように見せたいです:

月〜木:午後11時から午前2時

次のような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 />';
}  

?>
4

1 に答える 1

0

生活を楽にするために、単に「終了」日用に別の列を追加することを検討することをお勧めします。これにより、1 つのデータ セットで mo 01:00 から mo 00:55 に移動する可能性さえ提供されます。

(そして mysql_* は非推奨です。pdo を使用してください)

于 2013-03-17T01:10:55.877 に答える