борясь с группой временного диапазона PHP быть id - время начала, время окончания.Пожалуйста помоги! - PullRequest
0 голосов
/ 03 ноября 2010

Извините, что беспокою снова.Я опубликовал это раньше и получил помощь от удивительного парня по имени Трикс, но я думаю, что он отказался от меня ...: (

Проблема: у меня есть список раз с идентификатором, и я хочу просмотреть этивремя внутри идентификатора, чтобы получить время начала и время окончания.Это пример:

time_id           time_duration

 1       2010-10-15 11:15:00
 1       2010-10-15 11:20:00
 1       2010-10-15 11:25:00
 1       2010-10-15 11:30:00
 2       2010-10-15 11:35:00
 2       2010-10-15 11:40:00
 2       2010-10-15 11:45:00
 2       2010-10-15 11:50:00
 2       2010-10-15 11:55:00
 3       2010-10-15 12:00:00
 3       2010-10-15 12:05:00
 4       2010-10-15 12:10:00
 5       2010-10-15 12:15:00
 5       2010-10-15 12:20:00
 5       2010-10-15 12:25:00

Таким образом, результат этого должен отражаться (обратите внимание, продолжительность была сгруппирована по time_id):

 time_id 1: "Start 11:15  -  End 11:30"
 time_id 2: "Start 11:35  -  End 11:55"
 time_id 3: "Start 12:00  -  End 12:05"
 time_id 4: "Start 12:10  -  End 12:10"
 time_id 5: "Start 12:15  -  End 12:25"

Вот куда я попал ... Трикс и Крозин мне очень помогли.

 $dates = mysql_query("SELECT time_id, time_duration FROM time_table' GROUP BY time_id"); 
 while($raw = mysql_fetch_array($dates)){ 
 $time= $raw['time_duration']; 
 $min_time = min(TIME_FORMAT(time_duration,'%h:%i:%s'));
 }
 echo $min_time;

Не могли бы вы помочь мне с этим. Я действительно изо всех сил !!!

Ответы [ 2 ]

1 голос
/ 03 ноября 2010

Использование:

$dates = mysql_query("SELECT t.time_id,
                             DATE_FORMAT(MIN(t.time_duration), '%H:%i') AS min_time,
                             DATE_FORMAT(MAX(t.time_duration), '%H:%i') AS max_time
                        FROM TIME_TABLE t
                    GROUP BY t.time_id"); 

while($raw = mysql_fetch_array($dates)) { 
  echo "time_id $raw['time_id']: Start $raw['min_time'] - End $raw['max_time']";
}
0 голосов
/ 03 ноября 2010

OMG Ponies предлагает отличное предложение, которое делает практически все в запросе sql. Я не знаю, склонны ли вы делать логику в PHP, потому что вы не знали / не чувствовали себя неудобно с более сложным SQL, или если вы по какой-то причине хотите выполнять больше работы в PHP.

Ваш PHP, похоже, следует в основном правильной идее, но в этой строке полно проблем

$ min_time = min (TIME_FORMAT (time_duration, '% h:% i:% s'));

Одна минута с одним буквальным аргументом? Ему нужно указать либо массив, либо два или более литералов.
Два: вы используете TIME_FORMAT неправильно.

echo TIME_FORMAT ('2010-10-15 11:15:00', '% h:% m:% s'); // вылетает при запуске

Три: time_duration - это индекс $ raw, строка вашего ответа. Это не приемлемый аргумент. Возможно, вы хотели положить туда время?

Мне нравится использовать метки времени UNIX (длинные целые числа, в которых хранятся год, секунда и все, что находится между ними) и форматировать их непосредственно перед отображением, что может оказаться полезным для этой цели. Проверьте функции date и mktime , чтобы увидеть, что это значит. Это сделало бы ваши сравнения простыми и беззаботными, и вы можете просто отформатировать их по своему желанию прямо перед (или внутри) эхом.

...