Алфавитный вывод букв (каталог)

Тема в разделе "Как сделать...", создана пользователем Izrael, 27 авг 2012.

  1. Izrael

    Izrael

    Регистр.:
    12 фев 2008
    Сообщения:
    448
    Симпатии:
    56
    Добрый день, может есть готовые решения . Задача такая мне нужно увидеть пример скрипта который будет выводить алфавитный каталог типо. А.Б.В.Г.Д . При нажатии на букву должна открываться страница с инфой, в моём случае я собираюсь так выодить города.. Допустим (Москва, Минеральные Воды, Минск итд... это если нажмем на букву М )
     
  2. Danger_man

    Danger_man Создатель

    Регистр.:
    25 апр 2009
    Сообщения:
    18
    Симпатии:
    2
    Циклом на странице выводите буквы (да хоть руками), делаете путь согласно вашему скрипту (например example.com/blalbalba.php?cat=Z). В blalbalba.php получаете $_GET['cat'], и составляете запрос к базе к табличке (не забыв защитится от sql inj), где хранятся города используя оператор LIKE
     
  3. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    готовых решений куча, но как правило это плагины/модули для каких-либо движков
    если пишется что-то свое, то общий алгоритм примерно такой:
    0. получаем нужную букву, например так
    Код:
    $letter = $_GET[letter];
    1. не забываем про пагинацию, поэтому сразу же получаем нужную страницу, например так
    Код:
     $page = $_GET[page]; 
    2. приводим букву к нужному регистру, нужной кодировке, возможно еще чему-то нужному (например если это каталог фирм то есть смысл почекать на скобки, кавычки, символы вроде "ООО" и прочую лабуду)... с городами вроде как должно быть проще, но все равно не забываем о безопасности
    3. определяемся как будем искать - либо по первой букве в названию (тогда в запросе будет LIKE), либо по отдельному полю, в котором будет прописана буква
    второй вариант будет работать быстрее, но придется изменять добавление городов - т.е. при добавлении, к примеру "москва" в доп. поле придется дописать букву "м"
    4. когда определились, делаем запрос
    если выбрали первый вариант то примерно такой
    Код:
     SELECT blablabla FROM table WHERE city LIKE ' $letter%' LIMIT $page, 10 
    если выбрали второй вариант то примерно такой
    Код:
     SELECT blablabla FROM table WHERE cityletter ='$letter' LIMIT $page, 10 
    в примере
    blablabla = нужная нам инфа
    city = города
    cityletter = поле с буквами
    5. собсно и выводим наше blablabla

    6, 7, 8 и так далее
    по мере желания добавляем необходимые навороты - например делаем ЧПУ, кеширование для запросов/результатов, и т.д.
     
    Izrael нравится это.