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

Выборка категории в фильтр

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

Здравствуйте. Я уже копал эту функцию, ничего не получилось, помогите плиз.

 

Имеем категории, пока просто текстом:

 

$areas = array('Maps\Download\HELLHALT v5.0.26.w3x', 'maps\download\DotA Allstars 6.88w3.w3x');

 

html:

 

                    {{foreach $areas as $key => $data}}
                   <li class="ipsMenu_item {{if isset( \IPS\Request::i()->in ) and \IPS\Request::i()->in == $key}}ipsMenu_itemChecked{{endif}}"><a href="{$thisUrl->setQueryString( array( 'in' => $key ) )}">{$data[1]}</a></li>
                   {{endforeach}}

 

результат: http://prntscr.com/ldh6bd

 

Я так понимаю, значения нужно преобразовать во что-то? Скажите плиз как :)

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


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

		/* Получение результатов для конкретной карты */
	if ( isset( \IPS\Request::i()->in ) and isset( $areas[ \IPS\Request::i()->in ] ) )
	{
		$appWhere = " AND map='" . \IPS\Db::i()->escape_string( $areas[\IPS\Request::i()->in][ 0 ] ) . "'";
	}

 

Так, запрос работает, осталось разобраться с этим массивом и можно редактировать под запрос в БД. Только мне вот еще не понятно, если я тут указываю [ 0 ] конкретно 0, соответственно выберется нулевое значение, даже если в фильтре будет 1 или 2, правильно же?

 

А ну да, нужно просто убрать [ 0 ] и тогда порядковый номер выберется из фильтра.

 

Потом еще бы массовый SELECT с сохранением в куках )))

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

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


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

Так оно работает уже, только есть баг со значением 1.

 

$areas = array('Maps\Download\HELLHALT v5.0.26.w3x', 'Maps\Download\HELLHALT v5.0.27.w3x');

 

Все результаты без фильтрации: http://prntscr.com/ldhq6i

Фильтрация с 0 порядковым номером (первое значение, так как у в коде порядковый номер с 0): http://prntscr.com/ldhqtm (Работает, выбрались результаты правильно).

Фильтрация с 1 порядковым номером (второее значение, так как у в коде порядковый номер с 0): http://prntscr.com/ldhrnq (Работает, выбрались результаты правильно).

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

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


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

В HTML изменил (название пункта):

 

                    {{foreach $areas as $key => $data}}
                   <li class="ipsMenu_item {{if isset( \IPS\Request::i()->in ) and \IPS\Request::i()->in == $key}}ipsMenu_itemChecked{{endif}}"><a href="{$thisUrl->setQueryString( array( 'in' => $key ) )}">{$data[1]}</a></li>
                   {{endforeach}}

 

на

 

                    {{foreach $areas as $key => $data}}
                   <li class="ipsMenu_item {{if isset( \IPS\Request::i()->in ) and \IPS\Request::i()->in == $key}}ipsMenu_itemChecked{{endif}}"><a href="{$thisUrl->setQueryString( array( 'in' => $key ) )}">{$areas[$key]}</a></li>
                   {{endforeach}}

 

Вроде работает, всё правильно? Можно в базу теперь лезть?

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

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


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

В итоге, получилось так:

 

            <li>
               <a href='#elLeaderboard_app_menu' id="elLeaderboard_app" data-ipsMenu>{{if isset( \IPS\Request::i()->in ) and isset( $areas[ \IPS\Request::i()->in ] )}}{lang="sharedstats_games_filter_category" sprintf="$areas[ \IPS\Request::i()->in ]"}{{else}}{lang="sharedstats_games_filter_category_all"}{{endif}} <i class="fa fa-caret-down"></i></a>
               <ul id="elLeaderboard_app_menu" class="ipsMenu ipsMenu_selectable ipsMenu_normal ipsHide">
                   <li class="ipsMenu_item {{if ! isset( \IPS\Request::i()->in )}}ipsMenu_itemChecked{{endif}}"><a href="{$thisUrl->stripQueryString( 'in' )}">{lang="leaderboard_all_apps"}</a></li>
                   {{foreach $areas as $key => $data}}
                   <li class="ipsMenu_item {{if isset( \IPS\Request::i()->in ) and \IPS\Request::i()->in == $key}}ipsMenu_itemChecked{{endif}}"><a href="{$thisUrl->setQueryString( array( 'in' => $key ) )}">{$areas[$key]}</a></li>
                   {{endforeach}}
               </ul>
           </li>

 

Как тут выбрать ключ?

sprintf="$areas[ \IPS\Request::i()->in ][КЛЮЧ 0,1,2,3,etc]"

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


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

Как тут выбрать ключ?

 

$areas[ \IPS\Request::i()->in ]

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


Ссылка на сообщение
Illegal string offset 'Maps\Download\HELLHALT v5.0.26.w3x'

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


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

Illegal string offset 'Maps\Download\HELLHALT v5.0.26.w3x'

 

Где?

Наверное, должны быть указаны файл/строка/ и т.д.

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


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

Спасибо, всё в порядке, в lng файле не указал %s.

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


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

Похоже зацикливается выборка, браузер глючит и долго страницу грузит. в чем ошибка?

 

		$selectMap = \IPS\Db::i('stats')->select( 'map', 'stats_games', NULL, 'botid ASC', array(), NULL, NULL, 10 );

	$areas = array();

	foreach( $selectMap as $map )
	{
		$areas[] = $map;
	}

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


Ссылка на сообщение
$selectMap = \IPS\Db::i('stats')->select( 'map', 'stats_games', NULL, 'botid ASC', array(), NULL, NULL, 1 );

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


Ссылка на сообщение
11/02/18 12:28 (изменено)

Нет, неправильное условие я составил.

 

У меня в базе данных порядка 2000 категорий, они вписаны к каждой игре. Первым шагом нужно выбрать их уникальными.

 

		$selectMaps = array();
       $selectMaps = \IPS\Db::i('stats')->select( 'DISTINCT map', 'stats_games' )->first();

 

Правильно же я думаю?

 

Затем нужно вывести полученные данные в шаблон, при этом, массив разбирается уже в шаблоне.

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

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


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

        try {
       	$selectMaps = array();
       	$selectMaps = \IPS\Db::i('stats')->select( 'DISTINCT map', 'stats_games' )->first();
       	$areas = array();
       	$areas[] = $selectMaps;
       } catch( \Exception $ex ) { $areas = NULL; }

 

Сейчас такой код, выводит одну карту, первую. из-за ->first() ?

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


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

Я же дал код, где используется DISTINCT

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


Ссылка на сообщение
11/02/18 12:52 (изменено)

Спасибо, всё работает: http://prntscr.com/ldjmqz

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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