Опубликовано: 2 ноября 20187 г Здравствуйте. Я уже копал эту функцию, ничего не получилось, помогите плиз. Имеем категории, пока просто текстом: $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 Я так понимаю, значения нужно преобразовать во что-то? Скажите плиз как :)
Опубликовано: 2 ноября 20187 г Автор /* Получение результатов для конкретной карты */ 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 с сохранением в куках ))) Изменено 2 ноября 20187 г пользователем TemKa_SD
Опубликовано: 2 ноября 20187 г Автор Так оно работает уже, только есть баг со значением 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 (Работает, выбрались результаты правильно). Изменено 2 ноября 20187 г пользователем TemKa_SD
Опубликовано: 2 ноября 20187 г Автор В 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}} Вроде работает, всё правильно? Можно в базу теперь лезть? Изменено 2 ноября 20187 г пользователем TemKa_SD
Опубликовано: 2 ноября 20187 г Автор В итоге, получилось так: <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]"
Опубликовано: 2 ноября 20187 г Illegal string offset 'Maps\Download\HELLHALT v5.0.26.w3x' Где?Наверное, должны быть указаны файл/строка/ и т.д.
Опубликовано: 2 ноября 20187 г Автор Похоже зацикливается выборка, браузер глючит и долго страницу грузит. в чем ошибка? $selectMap = \IPS\Db::i('stats')->select( 'map', 'stats_games', NULL, 'botid ASC', array(), NULL, NULL, 10 ); $areas = array(); foreach( $selectMap as $map ) { $areas[] = $map; }
Опубликовано: 2 ноября 20187 г $selectMap = \IPS\Db::i('stats')->select( 'map', 'stats_games', NULL, 'botid ASC', array(), NULL, NULL, 1 );
Опубликовано: 2 ноября 20187 г Автор Нет, неправильное условие я составил. У меня в базе данных порядка 2000 категорий, они вписаны к каждой игре. Первым шагом нужно выбрать их уникальными. $selectMaps = array(); $selectMaps = \IPS\Db::i('stats')->select( 'DISTINCT map', 'stats_games' )->first(); Правильно же я думаю? Затем нужно вывести полученные данные в шаблон, при этом, массив разбирается уже в шаблоне. Изменено 2 ноября 20187 г пользователем TemKa_SD
Опубликовано: 2 ноября 20187 г Автор try { $selectMaps = array(); $selectMaps = \IPS\Db::i('stats')->select( 'DISTINCT map', 'stats_games' )->first(); $areas = array(); $areas[] = $selectMaps; } catch( \Exception $ex ) { $areas = NULL; } Сейчас такой код, выводит одну карту, первую. из-за ->first() ?
Опубликовано: 2 ноября 20187 г Автор Спасибо, всё работает: http://prntscr.com/ldjmqz Изменено 2 ноября 20187 г пользователем TemKa_SD
Опубликовано: 2 ноября 20187 г Автор Я сразу тут спрошу, хочу в админке, в настройках выгрузить результаты так же, и по ним уже делать различные настройки. Там можно это использовать в settings.json ?
Здравствуйте. Я уже копал эту функцию, ничего не получилось, помогите плиз.
Имеем категории, пока просто текстом:
$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
Я так понимаю, значения нужно преобразовать во что-то? Скажите плиз как :)