Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
TemKa_SD

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

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

 

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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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]"

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
Illegal string offset 'Maps\Download\HELLHALT v5.0.26.w3x'

Share this post


Link to post
Share on other sites

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

 

Где?

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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;
	}

Share this post


Link to post
Share on other sites
$selectMap = \IPS\Db::i('stats')->select( 'map', 'stats_games', NULL, 'botid ASC', array(), NULL, NULL, 1 );

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

Edited by TemKa_SD

Share this post


Link to post
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() ?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...