Jump to content

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


TemKa_SD
 Share

Recommended Posts

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

 

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

 

$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

 

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

Link to comment
Share on other sites

		/* Получение результатов для конкретной карты */
	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 с сохранением в куках )))

Edited by TemKa_SD
Link to comment
Share on other sites

Так оно работает уже, только есть баг со значением 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 (Работает, выбрались результаты правильно).

Edited by TemKa_SD
Link to comment
Share on other sites

В 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}}

 

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

Edited by TemKa_SD
Link to comment
Share on other sites

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

 

            <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]"

Link to comment
Share on other sites

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

 

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

	$areas = array();

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

Link to comment
Share on other sites

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

 

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

 

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

 

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

 

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

Edited by TemKa_SD
Link to comment
Share on other sites

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

 

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...