Помогите создать tasks - Страница 2 - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

СвернутьПрикрепленные теги

Теги не найдены

  • 3 Страниц +
  • 1
  • 2
  • 3

Помогите создать tasks

#16 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 13 Август 2018 - 15:02

Как-то все запутано.

Если игрок с именем (поле name) temka_sd играл на сервере (поле spoofedrealm) Garena
И другой игрок с таким же именем (поле name) temka_sd играл на сервере (поле spoofedrealm) Rubattle.net
То какую запись Вы будете обновлять в таблице stats_forum_connections?
0

#17 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 13 Август 2018 - 15:10

Обе, если обе записи там есть и с обоих аккаунтов играли за последние 30 дней.
0

#18 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 14 Август 2018 - 09:21

$names = iterator_to_array(\IPS\Db::i()->select(
    "CONCAT(stats_gameplayers.name, stats_gameplayers.spoofedrealm)",
    'stats_gameplayers',
    array( 'UNIX_TIMESTAMP(stats_games.datetime)>?', \IPS\DateTime::create()->sub(new \DateInterval('P30D'))->getTimestamp()),
    null,
    null,
    array('stats_gameplayers.name', 'stats_gameplayers.spoofedrealm')
)->join(
    'stats_games',
    'stats_games.id=stats_gameplayers.gameid'
));


if (count($names))
{
    \IPS\Db::i()->update('stats_forum_connections', array('active' => 1), \IPS\Db::i()->in("CONCAT(name, server)", $names));    
}

1

#19 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 14 Август 2018 - 13:25

Так же делал, только без CONCAT. Спасибо, сейчас попробую.
0

#20 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 14 Август 2018 - 13:33

Почему так не работает 0.

	public function execute()
	{
        $db = \IPS\sharedstats\DB::get();
		$names = iterator_to_array($db::i('stats')->select(
		    "CONCAT(stats_gameplayers.name, stats_gameplayers.spoofedrealm)",
		    'stats_gameplayers',
		    array( 'UNIX_TIMESTAMP(stats_games.datetime)>?', \IPS\DateTime::create()->sub(new \DateInterval('P30D'))->getTimestamp()),
		    null,
		    null,
		    array('stats_gameplayers.name', 'stats_gameplayers.spoofedrealm')
		)->join(
		    'stats_games',
		    'stats_games.id=stats_gameplayers.gameid'
		));
		if (count($names))
		{
		    $db::i('stats')->update('stats_forum_connections', array('active' => 1), $db::i('stats')->in("CONCAT(name, server)", $names));
		}
		else {
			$db::i('stats')->update('stats_forum_connections', array('active' => 0), $db::i('stats')->in("CONCAT(name, server)", $names));
		}
	}

0

#21 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 14 Август 2018 - 14:02

        else {
            $db::i('stats')->update('stats_forum_connections', array('active' => 0), $db::i('stats')->in("CONCAT(name, server)", $names));
        }
А что Вы тут пытаетесь обновить, если массив $names пуст, и запрос выглядит так
UPDATE stats_forum_connections SET active=0 WHERE 1=0

0

#22 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 01:26

Да, массив пусть как и должно быть, т.е за последние 30 дней игры не найдены, и нужно установить active=0.
0

#23 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 08:08

Просмотреть сообщениеTemKa_SD сказал(а):

Да, массив пусть как и должно быть, т.е за последние 30 дней игры не найдены, и нужно установить active=0.


Кому Вы собираетесь устанавливать active=0, если в результате запроса получено 0 записей?

Устанавливайте всем active=0, а после устанавливайте active=1 юзерам, игравшим за последние 30 дней.
0

#24 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 08:11

Всё правильно, а если после установки active - 1 игрок не играл в течении 30 дней, нужно вернуть 0.
0

#25 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 08:37

1. Ставьте всем 0
2. Ставьте 1 тем, кто играл.

В чем проблема?
0

#26 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 08:41

Проблема в том, что, c 1 на 0 не переключает, если игрок не играл за последние 30 дней.

Еще раз, смотрите: изначально у всех стоит 0, затем модуль присваивает 1 тем, кто играл за последние 30 дней, с этим всё в порядке. Проходит еще 2 дня, а игрок не играл, т.е уже 32 дня, модуль не возвращает 0, остается 1.
0

#27 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 08:54

Покажите весь код.
0

#28 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 10:31

Код таска? Сейчас такой: http://ipbskins.ru/f...post__p__104914

Т.е здесь должно быть ИНАЧЕ обновить на 0. Т.е если игрок не играл в течении 30 дней, должен обновить на 0, а он не обновляет (

Сообщение изменено: TemKa_SD (15 Август 2018 - 10:32)

0

#29 Пользователь не на сайте   TemKa_SD ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 413
  • Регистрация: 16-Январь 18
  • Репутация: 6
  • Откуда:Спасск-Дальний
  • IPB version:4.1.x
 

Отправлено 15 Август 2018 - 10:34

Вот так работает вроде, это правильная реализация?

	public function execute()
	{
        $db = \IPS\sharedstats\DB::get();
		$names = iterator_to_array($db::i('stats')->select(
		    "CONCAT(stats_gameplayers.name, stats_gameplayers.spoofedrealm)",
		    'stats_gameplayers',
		    array( 'UNIX_TIMESTAMP(stats_games.datetime)>?', \IPS\DateTime::create()->sub(new \DateInterval('P200D'))->getTimestamp()),
		    null,
		    null,
		    array('stats_gameplayers.name', 'stats_gameplayers.spoofedrealm')
		)->join(
		    'stats_games',
		    'stats_games.id=stats_gameplayers.gameid'
		));
		if (count($names))
		{
		    $db::i('stats')->update('stats_forum_connections', array('active' => 1), $db::i('stats')->in("CONCAT(name, server)", $names));
		}
		else {
			$db::i('stats')->update('stats_forum_connections', array('active' => 0));
		}
	}

0

#30 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 3 591
  • Регистрация: 26-Октябрь 11
  • Репутация: 1 403
  • IPB version:I have no IPB
 

Отправлено 15 Август 2018 - 10:49

Просмотреть сообщениеTemKa_SD сказал(а):

Вот так работает вроде, это правильная реализация?

Нет.

Вы не учитываете старых юзеров.

Допустим, что у всех установлено active=0
User1 -> active=0
User2 -> active=0
User3 -> active=0
User4 -> active=0
User5 -> active=0
User6 -> active=0
...
User100 -> active=0

Задача выполняется и находит юзеров, игравших за последние 30 дней: User1, User2, User3
User1 -> active=1
User2 -> active=1
User3 -> active=1
User4 -> active=0
User5 -> active=0
User6 -> active=0
...
User100 -> active=0

Задача выполняется и находит юзеров, игравших за последние 30 дней: User1, User2, User3, User4
User1 -> active=1
User2 -> active=1
User3 -> active=1
User4 -> active=1
User5 -> active=0
User6 -> active=0
...
User100 -> active=0

Если каждый раз будут находиться игроки, то код $db::i('stats')->update('stats_forum_connections', array('active' => 0)); не будет выполняться, но через 31 день у юзеров User1, User2, User3 должен быть active=0.
0

Сообщить об этой теме:


  • 3 Страниц +
  • 1
  • 2
  • 3


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2018 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна