Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 277
от 08.03.2006, 23:09

Администратор:Калашников О.А.
В рассылке:Подписчиков: 232, Экспертов: 34
В номере:Вопросов: 1, Ответов: 3


Вопрос № 36635: Добрый день, ув. эксперты. Возможно, вопрос не совсем по теме - здесь и PHP, и MySQL. Помогите, пожалуйста, с кусочком кода. Надо получить текущую дату (PHP) и при выборке из таблицы MySQL использовать условие: если paid=0, то отдавать все записи...

Вопрос № 36.635
Добрый день, ув. эксперты. Возможно, вопрос не совсем по теме - здесь и PHP, и MySQL. Помогите, пожалуйста, с кусочком кода. Надо получить текущую дату (PHP) и при выборке из таблицы MySQL использовать условие:
если paid=0, то отдавать все записи из БД без проверки условия
если paid=1, то отдавать только записи те записи БД, у которых дата в поле placing_to >= текущей даты.
placing_to имеет тип DATETIME, paid имеет тип TINYINT(4)
Вариант примерно такой:

$cur_date = time();
SELECT * FROM mytable WHERE (paid=0) or (paid=1 AND $cur_date<placing_to)

Тем не менее, выдаются ВСЕ записи. Как все-таки правильно сравнить даты ?
Отправлен: 03.03.2006, 12:30
Вопрос задала: Tatiana L (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Cтепанов Андрей Валерьевич
Здравствуйте, Tatiana L!
Все очень просто, ответ смотрите в приложении

Приложение:

---------
Все мы будем в аду, но я буду с вилами!!

Ответ отправил: Cтепанов Андрей Валерьевич (статус: 4-ый класс)
Отправлен: 03.03.2006, 13:15

Отвечает: Ерёмин Андрей
Здравствуйте, Tatiana L!
Ну так ошибка на лицо! Функция time() возвращает количество миллисекунд, т.е. это аналог unixtime. А в базе, в поле типа DATE данных хранятся в виде "2006-03-08" (8 марта 2006 года соответственно). Поэтому нужно сделать так:
$cur_date = date("Y-m-d").
Поле DATETIME - это DATE + TIME, т.е. ещё нужно добавить:
$cur_date = date("Y-m-d H:i");
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Отправлен: 03.03.2006, 13:41

Отвечает: КиберТварь
Здравствуйте, Tatiana L!
как я помню в майСКЛ-е дата хранится в следующем формате
ГГГГ-ММ-ДД
по этому когда сравниваете данные нужно учесть этот момент

Приложение:

Ответ отправил: КиберТварь (статус: Практикант)
Отправлен: 03.03.2006, 17:23


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.17 (beta) от 06.03.2006
Яндекс Rambler's Top100

В избранное