Автор Тема: Помогите с навигацией при постраничным выводом из базы.  (Прочитано 7985 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dansmir

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Нужно сделать постраничный вывод из базы в алфавитном порядке, тоесть навигация типа
[A] [C] ...
Причем если в базе нет даных на какую то букву ее не должно быть в навигации( или неактивна ).
Подскажите каким образом можно сделать такую навигацию.

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Вопрос номер один, СУБД 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

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
SELECT COUNT(*) FROM TABLE WHERE LOWER(`word`) LIKE LOWER("a%");
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
AlieN

А при чём тут COUNT?

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
И что получится при LOWER("a%") тоже интересно =)))

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
hanslinger:
И что получится при

LOWER("a%")



Хочу отметить этот вопрос даже более важен чем мой ))))

Оффлайн Dansmir

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Спасибо всем за помощь, проблема решилась запросом

select substring(name,1,1) from table1 group by 1 order by 1

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
[off]
Надеюсь никто не против если эта тема будет перенесена в форум "База Данных".
[/off]
[off]Безработный[/off]

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Цитировать
for_i_0:
Надеюсь никто не против если эта тема будет перенесена в форум "База Данных".


Сильно против наверное никто не будет, только вопрос что нужно было человеку какой запрос необходимо сделать или сам механизм реализации ))) Я например так и не понял... -))

Оффлайн Dansmir

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
to html_coder

нужен был сам механизм  реализации

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Ну тогда я думаю я тебе его изложил и тему можно закрыть.

Оффлайн Dansmir

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Да тему можно закрывать

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28