[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: выборка по дате 2
antonov_sa
Еще вопрос по предыдущей теме)
Я понял, что sql не удастся сделать то, что задумал, так как у меня в в каждой строке с данными есть дата(date) и время актуальности (ttl), и мне нужно сравнить даты и время актуальности уже в php цикле, помогите проверку составить пожалуйста, у меня получается следующее


$result=mysql_query("SELECT * FROM table");


while($row=mysql_fetch_array($result)){
if ($row[date] > ТЕКУЩЕЕ ВРЕМЯ-$row[ttl]){ //????? date в формате (пример 2010-03-11 21:03:16)
printf ("%s", $row["text"]);
}
}



спасибо заранее за помощь!



Спустя 7 минут, 16 секунд (17.03.2010 - 12:32) Игорь_Vasinsky написал(а):
Цитата
2010-03-11 21:03:16


чёт я не уверен что можно вычисления по такому формату делать


задей в массив: дата и время

сравни дату: если позже сравнивай время

я б вообще использывал time();

Спустя 1 минута (17.03.2010 - 12:33) sergeiss написал(а):
Если ты хочешь именно в ПХП сравнить, то тебе может помочь объект DateTime, либо функция strtotime().

И я так и не понял, почему в SQL ты не можешь сравнить?

И тему переношу в раздел "ПХП для начинающих", т.к. эта тема как раз про ПХП, а не про SQL.

Спустя 5 минут, 23 секунды (17.03.2010 - 12:38) antonov_sa написал(а):
Цитата (sergeiss @ 17.03.2010 - 09:33)
Если ты хочешь именно в ПХП сравнить, то тебе может помочь объект DateTime, либо функция strtotime().

И я так и не понял, почему в SQL ты не можешь сравнить?

И тему переношу в раздел "ПХП для начинающих", т.к. эта тема как раз про ПХП, а не про SQL.

так если я строю запрос к базе -

$result=mysql_query("SELECT * from table where date > (now() - interval 10 hour)");

то все понятно, но мне то вместо 10 hour надо подставлять значение из базы для каждой конкретной строки, или это возможно?

Спустя 4 минуты, 3 секунды (17.03.2010 - 12:42) Игорь_Vasinsky написал(а):
now()- interval 10 hour; - а php не понял что это такое

Спустя 3 минуты, 27 секунд (17.03.2010 - 12:46) antonov_sa написал(а):
Цитата (Игорь_Vasinsky @ 17.03.2010 - 09:42)
now()- interval 10 hour; - а php не понял что это такое

if ($row["date"] > (now()- interval 10 hour;)


Parse error: syntax error, unexpected T_LNUMBER in

Спустя 48 минут, 29 секунд (17.03.2010 - 13:34) sergeiss написал(а):
Цитата (antonov_sa @ 17.03.2010 - 13:38)
но мне то вместо 10 hour надо подставлять значение из базы для каждой конкретной строки, или это возможно?

А конкретнее???
Может быть, тебе просто надо брать не now(), а какую-то величину даты-времени, записанную в таблице?

Цитата (antonov_sa @ 17.03.2010 - 13:46)
if ($row["date"] > (now()- interval 10 hour;)

Точка с запятой внутри нафига?

Спустя 7 минут, 28 секунд (17.03.2010 - 13:42) antonov_sa написал(а):
Цитата (sergeiss @ 17.03.2010 - 10:34)
Цитата (antonov_sa @ 17.03.2010 - 13:38)
но мне то вместо 10 hour надо подставлять значение из базы для каждой конкретной строки, или это возможно?

А конкретнее???
Может быть, тебе просто надо брать не now(), а какую-то величину даты-времени, записанную в таблице?

Цитата (antonov_sa @ 17.03.2010 - 13:46)
if ($row["date"] > (now()- interval 10 hour;)

Точка с запятой внутри нафига?

мне нужно брать текущую дату и вычитать из нее от 2 часов до месяца, и сравнивать ее с датой из таблицы, точка с запятой роли не играет в принципе.. и так и так не работает)

Спустя 4 минуты, 21 секунда (17.03.2010 - 13:46) sergeiss написал(а):
antonov_sa - в самом первом ответе этой темы я уже высказал свои соображения о том, что тебе надо, чтобы в ПХП сделать.

А каков алгоритм, как ты определяешь, для какой строки взять 2 часа, а для какой - месяц?

Спустя 7 минут, 29 секунд (17.03.2010 - 13:54) antonov_sa написал(а):
Цитата (sergeiss @ 17.03.2010 - 10:46)
antonov_sa - в самом первом ответе этой темы я уже высказал свои соображения о том, что тебе надо, чтобы в ПХП сделать.

А каков алгоритм, как ты определяешь, для какой строки взять 2 часа, а для какой - месяц?

из базы для каждой строки, есть 2 ячейки, одна - дата создания(date), другая - время актуальности (ttl), там 4 варианта всего в принципе 2 часа, 1 день, 1 неделя, 1 месяц.. их я собираюсь приравнивать к переменной в каком-то то формате..

и мне нужна проверка соответственно если дата создания меньше настоящего времени минус время актуальности, то показывать мне это строчку..

Спустя 6 минут, 19 секунд (17.03.2010 - 14:00) Kuliev написал(а):
antonov_sa
Может Вам стоит здесь посмотреть

Спустя 3 минуты, 52 секунды (17.03.2010 - 14:04) ZeNkoT написал(а):
Не понятно в каком формате у тебя переменная $row[ttl] и что она содержит.
К примеру
$put_date = date("Y-m-d", mktime() - (10*24*60*60));
В $put_date мы храним календарное число, которое прошло 10 дней назад, т.е. от сегодня отнимаем 10 дней.

Соответственно твой цикл можно представить так:
while($row=mysql_fetch_array($result)){
if ($row['date'] > $put_date) echo $row['text'];
}

Спустя 13 минут, 51 секунда (17.03.2010 - 14:18) antonov_sa написал(а):
Цитата (sergeiss @ 17.03.2010 - 10:46)
antonov_sa - в самом первом ответе этой темы я уже высказал свои соображения о том, что тебе надо, чтобы в ПХП сделать.

А каков алгоритм, как ты определяешь, для какой строки взять 2 часа, а для какой - месяц?

sergeiss, спасибо, сразу не вчитался в твой первый пост,

перевел текущую дату и дату из базы с помощь strtotime() получились "юникс секунды"

и также например 2 часа представил как 7200 секунд и все заработало отлично

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.