Диапазон времени

Тема в разделе "PHP", создана пользователем CnecHa3, 3 фев 2011.

Модераторы: latteo
  1. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    Как сделать так чтобы запись из таблицы выводилась в определённое время и до определённого времени?

    Пример:
    время 21:00, данные из таблицы от 20:00 до 22:00
    время 21:30, данные из таблицы от 20:00 до 22:00
    время 22:00, данные из таблицы от 22:00 до 23:00
    время 00:00, данные из таблицы от 23:00 до 02:00
     
  2. failometr

    failometr Постоялец

    Регистр.:
    30 апр 2009
    Сообщения:
    128
    Симпатии:
    45
    Из какой таблицы? Речь идет о PHP или о MySQL ?
    Какой тип данных? Приведите пример нескольких записей в точности как они в таблице записаны.
     
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Если сообщения, которые нужно отобразить, у тебя привязаны к дате, то тогда так:
    PHP:
    if (date('H:i')== "21:00") {
    $where=mktime (20,0,0,date('m'),date('d'),date('Y')); 
    $where1=mktime (22,0,0,date('m'),date('d'),date('Y'));
    }
    elseif(
    date('H:i')== "21:30"){
    $where=mktime (20,0,0,date('m'),date('d'),date('Y')); 
    $where1=mktime (22,0,0,date('m'),date('d'),date('Y'));
    }
    elseif(
    date('H:i')== "22:00"){
    $where=mktime (22,0,0,date('m'),date('d'),date('Y')); 
    $where1=mktime (23,0,0,date('m'),date('d'),date('Y'));
    }
    // Ну и так далее...
    $query=mysql_query("SELECT * FROM tab1 WHERE `time_mess`>='".$where."' AND `time_mess`<='".$where1."'");
    а если у тебя какие то фиксированные сообщения типа: "Доброе утро", "Доброй ночи" и т.д. то тогда всё значительно проще:
    PHP:
    if (date('H:i')== "21:00") {
    $id=1;}
    elseif(
    date('H:i')== "21:30"){
    $id=2;}
    query=mysql_query("SELECT * FROM tab1 WHERE `id_mess`='".$id."'");
     
  4. CnecHa3

    CnecHa3 Постоялец

    Регистр.:
    10 фев 2007
    Сообщения:
    105
    Симпатии:
    20
    Речь идет о PHP & MySQL, в таблице поля(тип TIME)
    Код:
    restorans
    (`id`,`title`,`from`,`until`)
    ('1','Cili Pica','08:00:00','22:00:00') // тут все понятно from <= H AND until >= H
    ('2','Cili Pica #2','22:00:00','03:00:00') // а вот тут как? ведь 03:00:00 > 22:00:00 т.к. новый день
    
     
  5. parks

    parks

    Регистр.:
    18 сен 2008
    Сообщения:
    424
    Симпатии:
    60
    Я демаю нужно использовать формат времени AM или PM.
    Вот инфа Функции Даты и Времени
     
  6. failometr

    failometr Постоялец

    Регистр.:
    30 апр 2009
    Сообщения:
    128
    Симпатии:
    45
    Если смотреть на эти цифры как на время без даты, то как раз 03:00:00 < 22:00:00, все верно. К тому же у вас в таблице всегда и безусловно будет второе время больше первого, даже условия задавать не нужно. А если нужно посчитать разницу между часами, то в случае если второе время меньше, чем первое - нужно прибавить ко второму 24 часа и считать разницу.
     
  7. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    206
    Симпатии:
    14
    Если хранить время в формате Unix-stamp то проблемы как бы нет.
    Переводите свои ограничители времени в этот же формат и данные будут прекрасно выводиться вне зависимости от того что уже новые сутки.