Фильтр по буквам

Sunday

Cōgitō ergō sum
Регистрация
13 Дек 2009
Сообщения
823
Реакции
342
Имеется sql-запрос на вывод имён.
Требуется сделать фильтр по буквам. Т.е. жмякнули на А - получили все имена на А.
Я знаю, как по-нубски сделать, типа так:
Код:
if (isset($_GET['A'])) $a = 'условие для запроса';
elseif (isset($_GET['B'])) $b = 'условие для запроса';
 
...
И так для каждой буквы.

Подскажите, есть ли какой-то более изящный способ решить этот вопрос, чтобы не городить больше 20-ти условий?
 
не знаю для чего делать каждую букву?
Код:
if (isset($_GET['A'])) $a = 'условие для запроса';
elseif (isset($_GET['B'])) $b = 'условие для запроса';
можно к примеру:
Код:
if ($_REQUEST['letter'] != '')
{
    $where_sql = ' WHERE name LIKE \''.mysqli_real_escape_string(trim($_REQUEST['letter'])).'%\' ';
}
так же можно сделать цикл из букв (их вывода...) если нужно:
Код:
for($k=ord('A');$k<=ord('Z');$k++){
    $lit = chr($k);
    if ($lit == 'Z') $razd = '';
    else $razd = '|';
    if ($_REQUEST['letter'] == $lit)
        $nav_en_letter .= '&nbsp;<strong style="color:#008000">'.$lit.'</strong>&nbsp;'.$razd;
    else
        $nav_en_letter .= '&nbsp;<a href="'.$http.'?do=allusers&letter='.$lit.'">'.$lit.'</a>&nbsp;'.$razd;
}
for($k=ord('А');$k<=ord('Я');$k++){
    $lit = chr($k);
    if ($lit == 'Я') $razd = '';
    else $razd = '|';
    if ($_REQUEST['letter'] == $lit)
        $nav_ru_letter .= '&nbsp;<strong style="color:#008000">'.$lit.'</strong>&nbsp;'.$razd;
    else
        $nav_ru_letter .= '&nbsp;<a href="'.$http.'?do=allusers&letter='.$lit.'">'.$lit.'</a>&nbsp;'.$razd;
}
 
Мой модуль на DLE - Allusers (делал там вывод по буквам, поиск по имени),если нужно могу скинуть... может ещё что интересного найдёшь... :)
 
Я сделал по такому принципу
if ($_REQUEST['letter'] != '') { $where_sql = ' WHERE name LIKE \''.mysqli_real_escape_string(trim($_REQUEST['letter'])).'%\' '; }
Всё вроде норм, но список почему-то не ограничивается только именами на заданную букву. Т.е. сначала выводятся все нужные имена, а затем все остальные.

Как отсечь остальные в этом случае?
 
Следующий код выведет все записи, что начинаются на букву а и ничего другого. Смотрите свой полный запрос, что идет в базу и сравнивайте.
Код:
SELECT * FROM `table` WHERE `name` LIKE 'a%'
 
Спасибо, все верно, у меня тут видимо косяк какой-то...

Подскажите, как-то можно сформировать список ссылок с нужными адресами и анкорами, исходя из этого?
Код:
array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
или просто вручную сделать этот список?
 
если нужно могу скинуть...
Нужно, хочу посмотреть, как организован вывод окончательный. Мне кое-какие детали не ясны до конца.
Вдобавок у меня на сайте utf и ваш вариант с ord() и chr() не могу привести в рабочее состояние...
 
У меня на сайте UTF и проблемы с некоторыми русскими буквами.
Прописал в htaccess правило и ссылка выглядит так:
Код:
<a href="http://domen.ru/users-'.utf8_strtolower($letter).'.html">'.$letter.'</a>
есть функция utf8_strtolower для нижнего регистра. Но некоторые буквы коряво передаются и в итоге имеем Not Found
Как это победить?

UPD

Для просмотра ссылки Войди или Зарегистрируйся рулят
 
Подскажите пожалуйста, что нужно подставить в запрос, чтобы выборка была только по цифрам 0-9 и в порядке убывания?

И почему буква Ё не дружит с urlencode?
 
Назад
Сверху