Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка даты в БД
 
 автор: AlexDIXI   (18.04.2008 в 02:24)   письмо автору
 
 

У меня создана таблица (user) в ней три поля "id" первичный ключ int, "date" и "status". В "date" я установил по разному дату, будущую например 2009 т.д. и прошлую например 2007 и т.д. а в "status" всем полям, я их создал несколько, поместил "on".

Не получается реализовать скрипт, который будет запускаться по cron, он должен проверить в таблице (user) все поля date и если в одной из них дата (она такого формата например "2008-04-18 01:15:12" ) больше чем сегодняшняя и больше чем час,минута,секунда. То заменить поля "status" на "off".

Спасибо заранее с уважением!

   
 
 автор: AlexDIXI   (18.04.2008 в 09:57)   письмо автору
 
   для: AlexDIXI   (18.04.2008 в 02:24)
 

Ребята кому сложно или не хочется понимать что я написал ранее. Я перефразирую свой вопрос. Благо мне это очень важно.

Какой функцией я могу проверить в БД все поля "date", без передаваемых id и других параметров. Если поля "date" больше или равна текущей дате, то сделать изменения в поле "status". И так всем полям до окончания..

   
 
 автор: olejek   (18.04.2008 в 11:11)   письмо автору
 
   для: AlexDIXI   (18.04.2008 в 09:57)
 

 UPDATE table SET `status` = 'off' WHERE `date` < now( )  

   
 
 автор: AlexDIXI   (19.04.2008 в 02:03)   письмо автору
 
   для: olejek   (18.04.2008 в 11:11)
 

Спасибо огромное.

>
 UPDATE table SET `status` = 'off' WHERE `date` < now( )  


Но я вот не пойму, почему не сработал мой код.


require_once ('config.php');

$date_now = date('Y-m-d H:i:s');

$result = mysql_query ("UPDATE user SET status='OFF' WHERE `date` < $date_now ",$db);

if($result == true)
{
echo "OK";
}
else
{
echo "BAD";
}


И как я уже понял, что функция now( ), является текущей датой? Но как же она определила что я ввел дату в базу именно с годами, месяцами, днями, часами, минутами, секундами? А вдруг бы я ее ввел только год, или например только месяц ну и на конец я мог просто ввести время.

Извиняюсь за сумбур..

   
 
 автор: AlexDIXI   (19.04.2008 в 03:35)   письмо автору
 
   для: olejek   (18.04.2008 в 11:11)
 

Как добавить сюда, чтоб он не обновлял статус, если статус уже off? Это уменьшит нагрузку и пожалуй так будет правильно.

 UPDATE table SET `status` = 'off' WHERE `date` < now( )  

   
 
 автор: cheops   (18.04.2008 в 12:00)   письмо автору
 
   для: AlexDIXI   (18.04.2008 в 09:57)
 

Вы можете сравнивать даты при помощи логических операторов, как обычные числовые значения. Даже можете вычитать и складывать даты с временными интервалами при помощи конструкции INTERVAL.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования