Выборка категории в фильтр - Дизайн и модификация Invision Power Board

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

 

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

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

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

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

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

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

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

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

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

$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

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

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

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

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

0

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

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

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

0

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

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

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

0

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

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

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

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

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

0

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

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

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

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

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


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

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

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

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

Цитата

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

0

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

0

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

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

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

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

0

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

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

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

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

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

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


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

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

Сообщение изменено: TemKa_SD (02 Ноябрь 2018 - 14:31)

0

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

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

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

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


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

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

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

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

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

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

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

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

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

Сообщение изменено: TemKa_SD (02 Ноябрь 2018 - 14:56)

0

Сообщить об этой теме:


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


Быстрый ответ

  

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
При копировании материалов с сайта
прямая ссылка на источник обязательна