Фильтр по играм - Дизайн и модификация Invision Power Board

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

 

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

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

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

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

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

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

Отправлено 22 Ноябрь 2018 - 11:02

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

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

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

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

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

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

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

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

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

Отправлено 22 Ноябрь 2018 - 11:10

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

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

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

Отправлено 22 Ноябрь 2018 - 11:14

Ну да, вот примерно так: http://prntscr.com/lli0qn http://prntscr.com/lli10w
0

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

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

Отправлено 22 Ноябрь 2018 - 11:19

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

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

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

Отправлено 22 Ноябрь 2018 - 11: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 (22 Ноябрь 2018 - 11:23)

0

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

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

Отправлено 22 Ноябрь 2018 - 11:24

Как вариант
            foreach( \IPS\Db::i('wc3')->select( 'botid, gamename', 'stats_gamelist', NULL, 'botid ASC' ) as $bot )
            {
                static::$cachedBotlist[$bot['botid']] = $bot['gamename'];
            }

1

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

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

Отправлено 22 Ноябрь 2018 - 11:28

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

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

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

Отправлено 22 Ноябрь 2018 - 11:37

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

static::$cachedBotlist[$bot['botid']] = array_map('trim', explode('#', $bot['gamename']) );
можно как-то удалить ключ 1 из массива? эти данные не нужны просто.
0

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

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 446
  • Регистрация: 20-Март 09
  • Репутация: 2 549
  • IPB version:3.1.x
 

Отправлено 22 Ноябрь 2018 - 11:48

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

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

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

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

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

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

Отправлено 22 Ноябрь 2018 - 11:56

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

	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.
0

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

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

Отправлено 22 Ноябрь 2018 - 12:13

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'];
	}
}

1

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

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

Отправлено 22 Ноябрь 2018 - 12: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 (22 Ноябрь 2018 - 12:44)

0

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

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

Отправлено 22 Ноябрь 2018 - 12:50

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

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

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

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

Отправлено 22 Ноябрь 2018 - 13:55

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

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


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

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

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

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

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

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

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

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

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

Отправлено 22 Ноябрь 2018 - 14:08

Скажите еще вот что, я сделал всё на основе фильтра форумов, добавил data-controller="wc3.front.games.runningGamesFilter" и всё остальное. При нажатии нет обновления контента: https://dev.wc3.info/wc3/runningGames/ ну оно и понятно, наверное нужно через table делать. Какие варианты есть?
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-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна