-
Crank174RuS
Всем привет
![:) :)](./images/smilies/ab.gif)
Опять я вас беспокою
Вопрос такой:
Как сделать чтобы через определенное время из таблицы 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, почему то интервал не срабатывается
![:( :(](./images/smilies/ac.gif)
-
Distructor
- Администратор
Crank174RuS писал(а):<NOW()-INTERVAL 5 DAY
откуда ты это взял?
-
Crank174RuS
Distructor писал(а):Crank174RuS писал(а):<NOW()-INTERVAL 5 DAY
откуда ты это взял?
На каком то форуме смотрел, просто я так понял.
Не правильно?
-
AgentSIB
Сделай через крон либо по запросу, запоминая время последнего выполнения.
-
Distructor
- Администратор
ты хочешь чтобы админка снималась через 5 дней после выдачи?
тогда например date_add это дата установки прав
Код: Выделить всё
UPDATE `test_table` SET `admin` = '0' WHERE date_add < NOW()-INTERVAL 5 DAY
или если дата хранится как timestamp, то
Код: Выделить всё
UPDATE `test_table` SET `admin` = '0' WHERE date_add < unix_timestamp(NOW()-INTERVAL 5 DAY)
-
Crank174RuS
Я вот попробовал ток на время.
Вставил в date_add значение 60 а вместо 5 DAY = 50 SECOND
когда запускаю скрипт он почему то скаразу адмику снимает
![:( :(](./images/smilies/ac.gif)
-
Distructor
- Администратор
Crank174RuS писал(а):Вставил в date_add значение 60
в date_add должна храниться дата (например возвращаемая функцией time() ) а не какое-то левое число
-
Crank174RuS
все равно неробит
я просто не понял тебя(
я сделал чтобы в БД после запуска cron записавало дату
дату записывает в таком виде: 2011-10-07
-
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());
или добавление флага админки существующему
Код: Выделить всё
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);
этот запрос можешь поставить в крон на выполнение раз в день или час или полчаса в зависимости от того насколько критично снимать админку ровно через 5 дней.
-
Crank174RuS
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());
или добавление флага админки существующему
Код: Выделить всё
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);
этот запрос можешь поставить в крон на выполнение раз в день или час или полчаса в зависимости от того насколько критично снимать админку ровно через 5 дней.
Все равно после запуска крона он сразу ставит 0(
-- добавлено 17 окт 2011, 20:02 --
Крон ставлю так:
$tests = mysql_query("UPDATE `test_table` SET `is_admin`=0 WHERE `add_admin_date` > UNIX_TIMESTAMP(NOW() - INTERVAL 5 DAY)");
-
Crank174RuS
Я знаю что это)) Я имею ввиду в файл пишу код потом ставлю на него крон и все равно не робит
-
AgentSIB
Код: Выделить всё
$tests = mysql_query("UPDATE `test_table` SET `is_admin`=0 WHERE `add_admin_date` < (UNIX_TIMESTAMP() - 5 * 24 * 3600)");
Попробуй так.