Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
TemKa_SD

Фильтр по играм

Рекомендованные сообщения

Здравствуйте. Мне необходимо реализовать фильтр по картам, функционал весь готов, осталось вывести правильно сам фильтр.

 

И так, структура БД: http://prntscr.com/llhs1f

 

Мне нужно получить уникальные botid и gamename, так как они дублируются.

 

Получил список уникальных botid: http://prntscr.com/llht3e это основа, по которой должен формироваться фильтр, id чекбоксов будет равен этому полю.

 

Как мне получить имя игры?

 

Т.е должно быть что-то вроде: select gamename from stats_gamelist where botid='' and id='здесь первый попавшийся автоинкримент, чтобы вывести только одно значение';

 

Наверно ничего не понятно....!!!!@@@###$$$

Поделиться сообщением


Ссылка на сообщение

Что-то вроде такого наверно: http://prntscr.com/llhyjg

Поделиться сообщением


Ссылка на сообщение

Предоставляйте код. Нет желания писать по картинке.

Поделиться сообщением


Ссылка на сообщение
11/22/18 09:20 (изменено)

public static function getBotlist()
{
	if( static::$cachedBotlist === NULL )
	{
        foreach( \IPS\Db::i('wc3')->select( 'botid', 'stats_gamelist', NULL, 'botid ASC', array(), NULL, NULL, 1 ) as $bot )
        {
            static::$cachedBotlist[] = $bot = [
            	'botid'  => $bot,
            	'gamename'  => 'Imya Igry',
            ];
        }
	}

	return static::$cachedBotlist;
}

 

Я думаю, нужно что-то вроде: 'gamename' => 'Здесь select gamename ->first()',

Ну еще мне надо вывести кол-во Игр botid по полю ID наверно и игроков по полю total. И если я прав, везде так фёрст юзать? или надо форич? или я вообще бред несу?

Изменено пользователем TemKa_SD

Поделиться сообщением


Ссылка на сообщение

Как вариант

            foreach( \IPS\Db::i('wc3')->select( 'botid, gamename', 'stats_gamelist', NULL, 'botid ASC' ) as $bot )
           {
               static::$cachedBotlist[$bot['botid']] = $bot['gamename'];
           }

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Ого, супер, то что надо думаю. Спасибки )

Поделиться сообщением


Ссылка на сообщение

Я немного отформитировал имя игры: http://prntscr.com/llid4m

 

static::$cachedBotlist[$bot['botid']] = array_map('trim', explode('#', $bot['gamename']) );

можно как-то удалить ключ 1 из массива? эти данные не нужны просто.

Поделиться сообщением


Ссылка на сообщение

можно как-то удалить ключ 1 из массива? эти данные не нужны просто.

array_map('trim', explode('#', $bot['gamename']) )[0]

или

current( array_map('trim', explode('#', $bot['gamename']) ) )

 

В этом случае static::$cachedBotlist[$bot['botid']] будет содержать значение первого элемента массива кои является строка.

Поделиться сообщением


Ссылка на сообщение

Спасибо, работает. Сделал еще массив, так как мне нужны еще данные.

 

public static function getBotlist()
{
	if( static::$cachedBotlist === NULL )
	{
           foreach( \IPS\Db::i('wc3')->select( 'id, botid, gamename, totalplayers', 'stats_gamelist', NULL, 'botid ASC' ) as $bot )
           {
               static::$cachedBotlist[$bot['botid']] = [
				'gamename'   => current( array_map('trim', explode('#', $bot['gamename']) ) ),
				'players'   => $bot['totalplayers']
               ];
           }
	}

	return static::$cachedBotlist;
}

 

Результат: http://prntscr.com/llil02

 

Помогите еще с players, сейчас выводит просто поле из выше выбранных игр, мне нужно посчитать ПО ВСЕМ играм http://prntscr.com/llime1 т.е вот обведенные данные нужно сложить и результат положить в один botid.

Поделиться сообщением


Ссылка на сообщение
foreach( \IPS\Db::i('wc3')->select( 'id, botid, gamename, totalplayers', 'stats_gamelist', NULL, 'botid ASC' ) as $bot )
{
if (!isset(static::$cachedBotlist[$bot['botid']]))
{
	static::$cachedBotlist[$bot['botid']] = [
		'gamename'   => current( array_map('trim', explode('#', $bot['gamename']) ) ),
		'players'   => $bot['totalplayers']
	];					
}
else
{
	static::$cachedBotlist[$bot['botid']]['players'] += $bot['totalplayers'];
}
}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
11/22/18 10:43 (изменено)

Правильно вывел кол-во игр?

 

public static function getBotlist()
{
	if( static::$cachedBotlist === NULL )
	{
		foreach( \IPS\Db::i('wc3')->select( 'id, botid, gamename, totalplayers', 'stats_gamelist', NULL, 'botid ASC' ) as $bot )
		{
		    if (!isset(static::$cachedBotlist[$bot['botid']]))
		    {
		        static::$cachedBotlist[$bot['botid']] = [
		            'gamename'   => current( array_map('trim', explode('#', $bot['gamename']) ) ),
		            'games'   => count($bot['id']),
		            'players'   => $bot['totalplayers']
		        ];                  
		    }
		    else
		    {
		        static::$cachedBotlist[$bot['botid']]['players'] += $bot['totalplayers'];
		        static::$cachedBotlist[$bot['botid']]['games'] += count($bot['id']);
		    }
		}
	}

	return static::$cachedBotlist;
}

 

Не отвечайте, работает же )

Изменено пользователем TemKa_SD

Поделиться сообщением


Ссылка на сообщение

А как ключ то вывести? http://prntscr.com/lljfcc

 

И как лучше сделать, botid использовать в виде ключей или данных массива?

Поделиться сообщением


Ссылка на сообщение

Не отвечайте, работает же )

 

Можно вместо count($bot['id']) писать 1

 

А как ключ то вывести? http://prntscr.com/lljfcc

 

....as $id => $bot}}

И как лучше сделать, botid использовать в виде ключей или данных массива?

 

Как хотите, так и делайте

Поделиться сообщением


Ссылка на сообщение

Скажите еще вот что, я сделал всё на основе фильтра форумов, добавил data-controller="wc3.front.games.runningGamesFilter" и всё остальное. При нажатии нет обновления контента: https://dev.wc3.info/wc3/runningGames/ ну оно и понятно, наверное нужно через table делать. Какие варианты есть?

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...