Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP SQL запрос после регистрации через n дней

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


     05.04.2014    Общие вопросы по PHP    1515

вопрос
Вечер добрый !
Есть запрос
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
225

794 | 281

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
38

122 | 84

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
8

207 | 46

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
8

207 | 46

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
218

2174 | 930

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
39

1479 | 390

dj-avtosh - 7 апреля 2014 20:59 - шашлычник

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

skype: elhan.isaev

kolumb
8

207 | 46

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
225

794 | 281

D0Gmatist - 7 апреля 2014 21:20 - Местный

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

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

kolumb
8

207 | 46

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
225

794 | 281

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
8

207 | 46

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

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

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

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

D0Gmatist
225

794 | 281

D0Gmatist - 7 апреля 2014 21:51 - Местный

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

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

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

kolumb
8

207 | 46

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

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

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

D0Gmatist
225

794 | 281

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
8

207 | 46

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
8

207 | 46

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 для отключения ?

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

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