Регистрация
Вход через соцсети
Восстановление пароля

Как реализовать алфавитный указатель

Новый топик
07.06.2014, 13:01
Ответить | Цитировать
Гость
Гость

Здравствуйте.
Есть сайт на котором есть большой список товаров. Хотелось бы организовать фильтр или выборку товаров по первой букве. С Natcat только начинаю разбираться. Нашел информацию о запросе к бд, но не знаю как ее ораганизовать.

Код:
SELECT Author FROM Message190 WHERE LCASE(LEFT(Author,1))='а'


Это запрос на выборку в поле Authtor по букве а из таблицы Message190.
Подскажите какую конструкцию и как ее сделать на сайте.

Буду признателен за информацию.
07.06.2014, 14:07
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

В системных настройках компонента 190
Код:
if($_GET[search_chr]) $query_where = "a.Author LIKE '".$_GET[search_chr]."%'";


В нужном месте пропишите свои буквы.

Каждой букве Английского алфавита соответствует ASCII код, а это значит, что вместо того, что бы печатать каждую, мы можем использовать цикл:
Код:
<?php
for ($i=65; $i< =90; $i++) {
$chr = chr($i);?>
<a href='?search_chr=<?=$chr?>'><?=$chr?></a>
<? } ?>


Данный код выведет все буквы алфавита в верхнем регистре. Если вам необходимы буквы в нижнем регистре вы можете использовать цифры от 97 до 122. Для русских букв 192 - 223 - А-Я и
224 - 255 - а-я.

Есть другой способ, использовать функцию range :
Код:
<? foreach(range('A','Z') as $chr) echo "<a href='?search_chr=".$chr."'>".$chr."</a>"; ?>


Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
07.06.2014, 16:48
Ответить | Цитировать
Гость
Гость

Буквы прописал в префикс объекта. первый вариант выдл ошибку, второй заработал, но сортировку не дал.
07.06.2014, 17:10
Ответить | Цитировать
Гость
Гость

Второй способ заработал, но мне интереснее первый так как товары специфические и идут на 3 языках, или же как подружить range с украинским и русским языками. Наше в рунете такую конструкцию:
Код:
$abc = array();
foreach (range(chr(0xC0), chr(0xDF)) as $b)
$abc[] = iconv('CP1251', 'UTF-8', $b);
print_r($abc);

Думаю ее можно будет использовать для русского языка, если немного переделать, но что делать с кодировкой украинского языка?
07.06.2014, 17:26
Ответить | Цитировать
lexusblack
Хостинг-провайдер Литвинов Максим

Зарегистрирован:
2014-02-26
Сообщений: 1

Если кому потребуется сортировка на русском языке и цифрами. Поправьте меня если я не прав.
Для русского алфавита:
Код:
<? foreach(range(chr(0xC0), chr(0xDF)) as $b) echo "<a href='?search_chr=".iconv('CP1251', 'UTF-8', $b)."'>".iconv('CP1251', 'UTF-8', $b)."</a>"; ?><br />

Для цифр:
Код:
<? foreach(range(0,9) as $chr) echo "<a href='?search_chr=".$chr."'>".$chr."</a>"; ?><br />
198 196 2014-06-07 17:26:46 13682
Описание проекта