• Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Помогите реализовать задачу с базами данных

OrlandO

Любитель
Регистрация
17.05.2007
Сообщения
752
Реакции
0
Поинты
0.000
Хочу сделать на сайте словарь терминов. Но не знаю как это реализовать правильно. Есть отдельная БД в которой каждая буква - таблица, в которой уже вписаны слова - с пояснением.
Как сделать, чтобы главная страница была массивом из названий таблиц базы данных, которые ведут к перечню слов, которые находятся в этой таблице- просто неохота создавать 33 страницы отдельно под каждую букву?

Заранее благодарен

добавлено через 12 минут
чтобы было более понятно - уточню: когда мы обращаемся к параметрам таблицы мы обычно пишем SELECT*FROM (название таблицы) то есть указали куда обращаемся а потом уже выбираем значения, а мне нужно по сути нужно сделать SELECT*FROM (название базы данных) где значениями будут таблицы этой базы. Такое вообще возможно ??
 
Последнее редактирование:

Спанч Боб

МАСТЕР
Регистрация
30.08.2007
Сообщения
1,974
Реакции
237
Поинты
0.000
возможно, дайте сюда структуру таблиц
 

Mr. Vine

Интересующийся
Регистрация
02.10.2010
Сообщения
6
Реакции
0
Поинты
0.000
OrlandO, конечно возможно.
Насколько я понял, в базе пока нужно хранить только термины с их описаниями, и при этом предусмотреть вывод всех терминов, начинающихся, с определённой буквы алфавита. Если это так, то у нас получается одна таблица:

words, с полями:
id (идентификатор слова, на всякий случай, наверняка пригодится)
word (само слово)
meaning (значение слова)

А для того, чтобы получить все слова, начинающиеся с определённой буквы (L - необходимая нам буква), в запросе используем оператор LIKE:

SELECT *
FROM words
WHERE word LIKE L%

Знак % - служебный символ, он указывает, что после нужной нам буквы может идти любое количество других символов.
Только нужно учитывать, что всё должно быть в одной кодировке.

И ещё, если планируется создавать очень большую базу (хотя я так понял, что это вряд ли =)), то возможно этот запрос будет работать медленно. Тогда можно добавить в таблицу поле, содержащее букву, с которой начинается слово:

words, с полями:
id (идентификатор слова, на всякий случай, наверняка пригодится)
letter (буква)
word (само слово)
meaning (значение слова)

И делать выборку по букве:

SELECT *
FROM words
WHERE letter = L

Надеюсь помог :)
 

mpak59rus

Любитель
Регистрация
02.03.2010
Сообщения
505
Реакции
29
Поинты
0.000
Советую всем кто сомневается в своих знаниях запросов SQL проделать упражнения на сайте sql-ex.ru
 

amac

Любитель
Регистрация
02.05.2010
Сообщения
348
Реакции
51
Поинты
0.000
На sql-ex.ru предлагается писать запросы к базам данных с большими нарушениями ссылочной целостности. Много раз сталкивался с базами данных, написанными другими людьми, но таких нарушений ни разу не видел. Базы данных обычно проектируют очень тщательно. Запросы, которые предлагается писать на sql-ex.ru, лишены всякого смысла, вместо них нужно реконструировать сами базы данных.
 

zexis

Любитель
Регистрация
11.05.2009
Сообщения
148
Реакции
15
Поинты
0.000
Делать для каждой буквы по таблице – не рационально.
Лучше для этого использовать одну таблицу, а в ней создать колонку в которой хранить букву.
 

Auk000

Интересующийся
Регистрация
18.01.2009
Сообщения
46
Реакции
0
Поинты
0.000
Подниму тему, хоть она уже и старовата. Словари много на каких сайтах нужны, а в этой теме нормального ответа так и не дали. Все что предлагали выше конечно будет работать, но подход совершенно не рациональный. А как сделать правильно и красиво? Ниже я распишу человеческий способ, может кому пригодиться.

Вобщем словарь состоит из двух частей: указатель и собственно сам словарь.
Указатель это нечто вроде списка первых букв типа А, Б, В...
Предположим что при нажатии на букву в указателе мы должны попасть на страницу где будут находиться все термины на эту букву. (это собственно и будет сам словарь)
Для этого мы должны создать таблицу которая содержит два поля (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)...
В указатели ставим ссылки вроде "http://site.ru/termin.php?letter=a" чтоб методом get передать выбранную букву на страницу словаря. Там получаем эту букву и делаем запрос к базе данных
Код:
SELECT * FROM 'dictionary'  WHERE (SUBSTR(termin, 1, 1) = 'а')  ORDER BY termin ASC
И соответственно получим массив где в алфавитном порядке по ключам termin и description будут термины и описания для заданной буквы (тут буквы "а")
Если тема кого заинтересует могу и рабочий пример накатать, но думаю тут и так все понятно.
 

OrlandO

Любитель
Регистрация
17.05.2007
Сообщения
752
Реакции
0
Поинты
0.000
Тоже вариант, просто я хотел именно кнопками реализовать БД.
Возник новы вопрос по использованию БД.
Предположим у меня в таблице есть переменная A в которой храниться функция вида
<?
include ("http://имя/имя/имя.php");

?>
По этому адресу храниться набор ссылок, который может меняться. Мне нужно как-то выводить эту переменную из БД, отсюда и вопрос как это сделать? При помощи <? echo $myrow['переменная']; ?> - не получается и другие варианты тоже не работают ! В чем проблема и как ее решить?

добавлено через 14 часов 32 минуты
Неужели никто помочь не может?

добавлено через 15 часов 2 минуты
Все проблема решена. Но возник другой момент. При написании анкоров тех страниц используеться обычный текст, но он выводится в формате: "слврымраыомра", поэтому чтобы он был читаем его нужно написать в таком формате: &# 1055;&# 1077;&# 1085;&#1 089;&#108 0;&#108 6;&#10 85;&#10 85;&#1 086;&#10 77; &#10 86;&#107 3;&#10 77;&#1 089;&#1 087;&#10 77;&#109 5;&#10 77;&#10 85;&#1 080;&# 1077; . Будет лич читаться такой анкор поисковиком? Или это будет простой набор символов?
 
Последнее редактирование:

Auk000

Интересующийся
Регистрация
18.01.2009
Сообщения
46
Реакции
0
Поинты
0.000
очевидно проблемы с кодировкой.
 
Сверху Снизу