Я понял, что 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.
И я так и не понял, почему в 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) | ||||
А конкретнее??? Может быть, тебе просто надо брать не now(), а какую-то величину даты-времени, записанную в таблице?
Точка с запятой внутри нафига? |
мне нужно брать текущую дату и вычитать из нее от 2 часов до месяца, и сравнивать ее с датой из таблицы, точка с запятой роли не играет в принципе.. и так и так не работает)
Спустя 4 минуты, 21 секунда (17.03.2010 - 13:46) sergeiss написал(а):
antonov_sa - в самом первом ответе этой темы я уже высказал свои соображения о том, что тебе надо, чтобы в ПХП сделать.
А каков алгоритм, как ты определяешь, для какой строки взять 2 часа, а для какой - месяц?
А каков алгоритм, как ты определяешь, для какой строки взять 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 секунд и все заработало отлично