Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » SQL запрос после регистрации через n дней

SQL запрос после регистрации через n дней


     05.04.2014    Все вопросы » Общие вопросы по PHP    2945

вопрос
Вечер добрый !
Есть запрос
if($member_id['news_num'] >= 1  ){
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET user_group=3 WHERE user_id='{$member_id['user_id']}'" );
}

Суть такова!
После добавления пользователем 1 новости, он переходит в группу 3
Вопрос!
Как сделать что бы этот запрос срабатывал, только если пользователь зарегистрирован больше 3 дней?

Ответил: D0Gmatist


$reg_date = $member_id['reg_date'] + 256200; // 256200 = 3 дня
$date = date(); // реальное время

if ( ( $member_id['news_num'] >= 1 )  AND ( $reg_date >= $date ) ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

16 комментариев

D0Gmatist
Юзер

D0Gmatist - 5 апреля 2014 23:37 -

$reg_date = $member_id['reg_date'] + 256200; // 256200 = 3 дня
$date = time(); // реальное время

if ( ( $member_id['news_num'] >= 1 )  AND ( $reg_date <= $date ) ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

SX2
Эксперт

SX2 - 6 апреля 2014 00:00 -

$day = 3; // количество дней
$reg_date = $member_id['reg_date'] + 60*60*24*$day;
$date = time() + ($config['date_adjust'] * 60);

if ( ($member_id['news_num'] >= 1) AND ($reg_date <= $date) ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{$member_id['user_id']}'" );
}

Самая сложная часть работы – решиться приступить к ней.

kolumb
Юзер

kolumb - 7 апреля 2014 10:22 -

Подскажите ка правильно прописать проверку на существования поля в таблице?

К примеру !

Есть запрос!
if ( ( $member_id['news_num'] >= 1 )  AND $member_id['repa'] >= 1) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

Если в таблице, нет поля repa запрос не выполняется!

kolumb
Юзер

kolumb - 7 апреля 2014 16:54 -

Скажите так правильно будет?

if ($member_id['repa']) {
$repa = $member_id['repa']>=1;
}else{
$repa = !$member_id['repa']>=1;
}

if ( ( $member_id['news_num'] >= 1 ) AND ($repa ) ) {
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

vitnet
PHP-developer

vitnet - 28 августа 2014 19:57 -

Пробуйте так
if( $member_id['repa'] ) {
    $repa = $member_id['repa'] >= '1';
} else {
    $repa = '';
}

if( ( $member_id['news_num'] >= '1' ) AND $repa ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

dj-avtosh
PHP-developer

dj-avtosh - 7 апреля 2014 20:59 -

Не будет правильно. Почему в таблице может не быть поля то?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

kolumb
Юзер

kolumb - 7 апреля 2014 21:14 -

dj-avtosh,
Задача такая!
repa это модуль репутация!
Мне нужно, что бы запрос делался даже если, не установлен модуль!
А если установлен, тогда брало информации с него (количество репы)

в таком виде
if ( ( $member_id['news_num'] >= 1 )  AND $member_id['repa'] >= 1) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

запрос не происходит!
делаю
ALTER TABLE `dle_users` ADD `repa` MEDIUMINT( 8 ) DEFAULT 0

только после этого все норм!

Нужно сделать как бы проверку на repa

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 21:20 -

А для чего идёт проверка репы .. если репа понижена то фигли пигли?

kolumb
Юзер

kolumb - 7 апреля 2014 21:26 -

D0Gmatist,
Это как бы маленький хак !
Мне нужно что бы запрос
if ( ( $member_id['news_num'] >= 1 )  AND $member_id['repa'] >= 1) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

делался независимо от того, установлен ли модуль репутации или нет!
Если репа не установлена, тогда
$member_id['repa'] >= 1

не реагирует, так как обращается к несуществуещему полю!

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 21:31 -

if ( ( $member_id['news_num'] >= 1 )  OR ( $member_id['repa'] >= 1 ) ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

В данном случае условие
если news_num равно и больше одного ИЛИ repa равно и больше одного то выполнить

kolumb
Юзер

kolumb - 7 апреля 2014 21:42 -

D0Gmatist,
Мне нужно что бы, оба параметра были обязательны !

Задача в том, что бы сделать ели нет repa в таблице, тогда запрос не проверяет !
AND $member_id['repa'] >= 1

если есть, тогда берет с него информацию!

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 21:51 -

ну так если параметр обязателен то и и переменная должна быть обязательной .. а где взять переменную если её нет в БД

если репы нету то переменная всегда будет отдавать FALSE то бишь ноль "0"
что само по себе уже противоречит условию и всегда условие
$member_id['repa'] >= 1
будет 0 >= 1 - FALSE
и в итоге дальше if будет пропущен

kolumb
Юзер

kolumb - 7 апреля 2014 21:57 -

Цитата: D0Gmatist
переменну

В том то и проблема!
Нужно сделать проверку на переменную! Если есть, запрос происходит с news_num и repa если нет, тогда только news_num !
Может запрос по другому оформить ?

D0Gmatist
Юзер

D0Gmatist - 7 апреля 2014 22:01 -

if ( ( $member_id['news_num'] >= 1 )  AND ( $member_id['repa'] >= 1 OR $member_id['repa'] == 0 ) ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}
Я по другому не вижу вариантов

Хотя тогда уж проще
if ( ( $member_id['news_num'] >= 1 )  AND $member_id['repa'] >= 0 ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

если news_num равно и больше одного И repa равно и больше ноль то выполнить

kolumb
Юзер

kolumb - 7 апреля 2014 22:33 -

D0Gmatist,
Так я делал, работает!
if ( ( $member_id['news_num'] >= 1 )  AND $member_id['repa'] >= 0 ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

Но, если поставить 1 вместо 0 (без установленного модуля), тогда не работает!
P.S Я думал может можно как то прописать, что бы значение не влияло, если модуль не установлен!
Конкретно проверка repa в базе!

kolumb
Юзер

kolumb - 9 апреля 2014 17:01 -

Я так понял вариантов на проверку больше нет ?
Только так ?
if ( ( $member_id['news_num'] >= 1 )  AND $member_id['repa'] >= 0 ) {
    $db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET `user_group` = 3 WHERE user_id='{ $member_id['user_id'] }'" );
}

Ставить 0 для отключения ?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх