Re: Помогите реализовать задачу с базами данных
Подниму тему, хоть она уже и старовата. Словари много на каких сайтах нужны, а в этой теме нормального ответа так и не дали. Все что предлагали выше конечно будет работать, но подход совершенно не рациональный. А как сделать правильно и красиво? Ниже я распишу человеческий способ, может кому пригодиться.
Вобщем словарь состоит из двух частей: указатель и собственно сам словарь.
Указатель это нечто вроде списка первых букв типа А, Б, В...
Предположим что при нажатии на букву в указателе мы должны попасть на страницу где будут находиться все термины на эту букву. (это собственно и будет сам словарь)
Для этого мы должны создать таблицу которая содержит два поля (termin, description). Termin будет у нас термином, а description соответственно описанием этого термина. Саму таблицу назовем dictionary.
Так вот у нас есть таблица заполненная термином и описаниями. Чтоб получить список первых букв всех терминов надо выполнить простой запрос к БД:
Код:
SELECT SUBSTR(termin,1,1) AS letter FROM `dictionary` GROUP BY letter ORDER BY letter ASC
После выполнения запроса к БД в записи 'letter' мы будем иметь список всех букв, с которых начинаются термины в нашем словаре. Можно чуть чуть проапрейдить запрос добавив "COUNT(termin) AS num"
Код:
SELECT SUBSTR(termin,1,1) AS letter, COUNT(termin) AS num FROM `dictionary` GROUP BY letter ORDER BY letter ASC
и соответственно в записи num мы будем иметь количество терминов на каждую букву. Это нужно если мы хотим сделать на сайте указатель с количеством терминов вроде A(2), B(7), C(22)...
В указатели ставим ссылки вроде "https://site.ru/termin.php?letter=a" чтоб методом get передать выбранную букву на страницу словаря. Там получаем эту букву и делаем запрос к базе данных
Код:
SELECT * FROM 'dictionary' WHERE (SUBSTR(termin, 1, 1) = 'а') ORDER BY termin ASC
И соответственно получим массив где в алфавитном порядке по ключам termin и description будут термины и описания для заданной буквы (тут буквы "а")
Если тема кого заинтересует могу и рабочий пример накатать, но думаю тут и так все понятно.