Всем привет Опять я вас беспокою
Вопрос такой:
Как сделать чтобы через определенное время из таблицы test_table ставилось значение 0 в поле к примеру admin?
Вот так пойдет?:
mysql_query("UPDATE `test_table` SET `admin` = '0' WHERE `id` = '$user_id' <NOW()-INTERVAL 5 DAY");
test_table - это таблица
admin - это поле
id - это надо чтобы значение 0 ставилось не всем пользователям
Ну так пойдет?
Если есть ошибки то скажите плиз
-- добавлено 06 окт 2011, 20:05 --
просто когда запускается скрипт он сразу ставит значение 0, почему то интервал не срабатывается
Замена значения поля в БД через опр. время.
-
- Администратор
откуда ты это взял?Crank174RuS писал(а):<NOW()-INTERVAL 5 DAY
На каком то форуме смотрел, просто я так понял.Distructor писал(а):откуда ты это взял?Crank174RuS писал(а):<NOW()-INTERVAL 5 DAY
Не правильно?
Сделай через крон либо по запросу, запоминая время последнего выполнения.
-
- Администратор
ты хочешь чтобы админка снималась через 5 дней после выдачи?
тогда например date_add это дата установки прав
или если дата хранится как timestamp, то
тогда например date_add это дата установки прав
Код: Выделить всё
UPDATE `test_table` SET `admin` = '0' WHERE date_add < NOW()-INTERVAL 5 DAY
Код: Выделить всё
UPDATE `test_table` SET `admin` = '0' WHERE date_add < unix_timestamp(NOW()-INTERVAL 5 DAY)
Я вот попробовал ток на время.
Вставил в date_add значение 60 а вместо 5 DAY = 50 SECOND
когда запускаю скрипт он почему то скаразу адмику снимает
Вставил в date_add значение 60 а вместо 5 DAY = 50 SECOND
когда запускаю скрипт он почему то скаразу адмику снимает
-
- Администратор
в date_add должна храниться дата (например возвращаемая функцией time() ) а не какое-то левое числоCrank174RuS писал(а):Вставил в date_add значение 60
все равно неробит
я просто не понял тебя(
я сделал чтобы в БД после запуска cron записавало дату
дату записывает в таком виде: 2011-10-07
я просто не понял тебя(
я сделал чтобы в БД после запуска cron записавало дату
дату записывает в таком виде: 2011-10-07
-
- Администратор
структура таблицы
добавление пользователя с админкой
или добавление флага админки существующему
ищем тех кому дали админку больше чем 5 дней назад и снимаем с них админку
этот запрос можешь поставить в крон на выполнение раз в день или час или полчаса в зависимости от того насколько критично снимать админку ровно через 5 дней.
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `test_table` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`is_admin` int(11) NOT NULL DEFAULT '0' COMMENT '0-нет админки, 1 -есть',
`add_admin_date` int(11) NOT NULL COMMENT 'дата добавления админских прав',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Код: Выделить всё
INSERT INTO `test_table` (`is_admin`, `add_admin_date`) VALUES ('1', UNIX_TIMESTAMP());
Код: Выделить всё
UPDATE `test_table` SET `is_admin`=1, `add_admin_date`=UNIX_TIMESTAMP() WHERE `user_id`=1;
Код: Выделить всё
UPDATE `test_table` SET `is_admin`=0 WHERE `add_admin_date` > UNIX_TIMESTAMP(NOW() - INTERVAL 5 DAY);
Все равно после запуска крона он сразу ставит 0(Distructor писал(а):структура таблицыдобавление пользователя с админкойКод: Выделить всё
CREATE TABLE IF NOT EXISTS `test_table` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `is_admin` int(11) NOT NULL DEFAULT '0' COMMENT '0-нет админки, 1 -есть', `add_admin_date` int(11) NOT NULL COMMENT 'дата добавления админских прав', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
или добавление флага админки существующемуКод: Выделить всё
INSERT INTO `test_table` (`is_admin`, `add_admin_date`) VALUES ('1', UNIX_TIMESTAMP());
ищем тех кому дали админку больше чем 5 дней назад и снимаем с них админкуКод: Выделить всё
UPDATE `test_table` SET `is_admin`=1, `add_admin_date`=UNIX_TIMESTAMP() WHERE `user_id`=1;
этот запрос можешь поставить в крон на выполнение раз в день или час или полчаса в зависимости от того насколько критично снимать админку ровно через 5 дней.Код: Выделить всё
UPDATE `test_table` SET `is_admin`=0 WHERE `add_admin_date` > UNIX_TIMESTAMP(NOW() - INTERVAL 5 DAY);
-- добавлено 17 окт 2011, 20:02 --
Крон ставлю так:
$tests = mysql_query("UPDATE `test_table` SET `is_admin`=0 WHERE `add_admin_date` > UNIX_TIMESTAMP(NOW() - INTERVAL 5 DAY)");
Я вижу ты не совсем понимаешь что такое крон
http://ru.wikipedia.org/wiki/Cron
http://ru.wikipedia.org/wiki/NnCron
http://ru.wikipedia.org/wiki/Cron
http://ru.wikipedia.org/wiki/NnCron
Я знаю что это)) Я имею ввиду в файл пишу код потом ставлю на него крон и все равно не робитAgentSIB писал(а):Я вижу ты не совсем понимаешь что такое крон
http://ru.wikipedia.org/wiki/Cron
http://ru.wikipedia.org/wiki/NnCron
Код: Выделить всё
$tests = mysql_query("UPDATE `test_table` SET `is_admin`=0 WHERE `add_admin_date` < (UNIX_TIMESTAMP() - 5 * 24 * 3600)");