Forum Webscript.Ru

Общие => Базы данных => Тема начата: Dansmir от 03 Августа 2006, 23:05:24

Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: Dansmir от 03 Августа 2006, 23:05:24
Нужно сделать постраничный вывод из базы в алфавитном порядке, тоесть навигация типа
[A] [C] ...
Причем если в базе нет даных на какую то букву ее не должно быть в навигации( или неактивна ).
Подскажите каким образом можно сделать такую навигацию.
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: html_coder от 04 Августа 2006, 11:01:34
Вопрос номер один, СУБД MySQL?

Вопрос номер два, в базе ориентрироваться накое то одно поле надо, али как?

Пример для MySQL
Допустим есть таблица words с полем типа varchar word

word
____
Анна
Петя
Вова
Иван
Боря
...
____

Таким запросом выдираешь буквы, имеющиеся в этом поле причём каждую букву только один раз

SELECT
   DISTINCT
   SUBSTRING(word FROM 1 FOR 1) as letter
FROM
   `words`;


В массиве хранишь все буквы русского алфавита, т.е. для того чтобы тебе вывести листинг, тебе просто надо пройтись в цикле по твоему массиву, плюс в отдельном массиве хранить те буквы, которые получил из базы, идёшь по циклу по массиву со всем алафавитом и проверяешь есть буква в массиве с данными полученными из базы, если есть то делаешь ссылкой, нет выводишь просто текстом.

ссылки будут с параметром, через который ты и будешь получать букву, т.е например так href="bla.html?letter=А",

Ну а дальше всё просто получил букву в скрипте, сделал примерно такой запрос к базе


SELECT
   *
FROM
   `words`
WHERE word LIKE "А%";


Получил данные и вывел их на страницу.. Вот так!
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: AlieN от 04 Августа 2006, 13:26:03
SELECT COUNT(*) FROM TABLE WHERE LOWER(`word`) LIKE LOWER("a%");
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: html_coder от 04 Августа 2006, 14:57:27
AlieN

А при чём тут COUNT?
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: hanslinger от 05 Августа 2006, 00:43:16
И что получится при LOWER("a%") тоже интересно =)))
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: html_coder от 05 Августа 2006, 21:52:48
Цитировать
hanslinger:
И что получится при

LOWER("a%")



Хочу отметить этот вопрос даже более важен чем мой ))))
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: Dansmir от 06 Августа 2006, 13:54:00
Спасибо всем за помощь, проблема решилась запросом

select substring(name,1,1) from table1 group by 1 order by 1
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: for_i_0 от 07 Августа 2006, 02:05:49
[off]
Надеюсь никто не против если эта тема будет перенесена в форум "База Данных".
[/off]
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: html_coder от 07 Августа 2006, 09:26:32
Цитировать
for_i_0:
Надеюсь никто не против если эта тема будет перенесена в форум "База Данных".


Сильно против наверное никто не будет, только вопрос что нужно было человеку какой запрос необходимо сделать или сам механизм реализации ))) Я например так и не понял... -))
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: Dansmir от 07 Августа 2006, 11:55:41
to html_coder

нужен был сам механизм  реализации
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: html_coder от 07 Августа 2006, 12:08:32
Ну тогда я думаю я тебе его изложил и тему можно закрыть.
Название: Помогите с навигацией при постраничным выводом из базы.
Отправлено: Dansmir от 07 Августа 2006, 17:25:40
Да тему можно закрывать

Все еще раз спасибо.