MMGP logo
Присоединяйтесь к нашему инвестиционному форуму, на котором уже 642,363 пользователей. Чтобы получить доступ ко многим закрытым разделам и начать общение - зарегистрируйтесь прямо сейчас.
Все, что относится к Web-Программированию (PHP, Perl, JavaScript, MySQL, XML и т.д.)
Первый пост Опции темы
Старый 08.10.2010, 00:48
#1
Любитель
 
Пол: Мужской
Адрес: Киев
Инвестирую в: Свой бизнес
Регистрация: 15.05.2007
Сообщений: 796
Благодарностей: 87
Помогите реализовать задачу с базами данных

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

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

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

Последний раз редактировалось OrlandO; 08.10.2010 в 01:00. Причина: Добавлено сообщение
OrlandO вне форума
Старый 08.10.2010, 08:39
#2
Мастер
 
Пол: Мужской
Адрес: Поволжье
Инвестирую в: Свой бизнес
Регистрация: 29.08.2007
Сообщений: 2,301
Благодарностей: 420

награды Ветеран MMGP.RU Волшебный горшочек 
Re: Помогите реализовать задачу с базами данных

возможно, дайте сюда структуру таблиц
Спанч Боб вне форума
Сказали спасибо:
OrlandO (14.10.2010)
Старый 08.10.2010, 21:59
#3
Интересующийся
 
Пол: Мужской
Регистрация: 01.10.2010
Сообщений: 6
Благодарностей: 2
Re: Помогите реализовать задачу с базами данных

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

Надеюсь помог
Mr. Vine вне форума
Сказали спасибо:
OrlandO (14.10.2010)
Старый 14.10.2010, 17:49
#4
Любитель
 
Пол: Мужской
Адрес: Киев
Инвестирую в: Свой бизнес
Регистрация: 15.05.2007
Сообщений: 796
Благодарностей: 87
Автор темы Re: Помогите реализовать задачу с базами данных

спасибо огромное, вы мне очень помогли ! Воспользовался вторым вариантом !
OrlandO вне форума
Старый 15.10.2010, 09:20
#5
Любитель
 
Пол: Мужской
Инвестирую в: Форекс
Регистрация: 01.03.2010
Сообщений: 597
Благодарностей: 76
Re: Помогите реализовать задачу с базами данных

Советую всем кто сомневается в своих знаниях запросов SQL проделать упражнения на сайте sql-ex.ru
__________________
Золотой клон,хайп с игровым уклоном,работает больше 3-х лет! OkPay-платежная система;
Счета регистрирую через Лепрекона
mpak59rus вне форума
Старый 28.11.2010, 23:23
#6
Любитель
 
Имя: Андрей
Пол: Мужской
Адрес: Москва
Инвестирую в: Фондовый рынок
Регистрация: 01.05.2010
Сообщений: 357
Благодарностей: 52
Re: Помогите реализовать задачу с базами данных

На sql-ex.ru предлагается писать запросы к базам данных с большими нарушениями ссылочной целостности. Много раз сталкивался с базами данных, написанными другими людьми, но таких нарушений ни разу не видел. Базы данных обычно проектируют очень тщательно. Запросы, которые предлагается писать на sql-ex.ru, лишены всякого смысла, вместо них нужно реконструировать сами базы данных.
amac вне форума
Старый 15.12.2010, 02:02
#7
Любитель
 
Пол: Мужской
Инвестирую в: Свой бизнес
Регистрация: 10.05.2009
Сообщений: 153
Благодарностей: 19
Re: Помогите реализовать задачу с базами данных

Делать для каждой буквы по таблице – не рационально.
Лучше для этого использовать одну таблицу, а в ней создать колонку в которой хранить букву.
zexis вне форума
Старый 05.01.2011, 04:24
#8
Интересующийся
 
Пол: Мужской
Адрес: Литва
Регистрация: 17.01.2009
Сообщений: 48
Благодарностей: 16
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 будут термины и описания для заданной буквы (тут буквы "а")
Если тема кого заинтересует могу и рабочий пример накатать, но думаю тут и так все понятно.
Auk000 вне форума
Сказали спасибо 2 раз(а):
OrlandO (11.01.2011), san777 (05.01.2011)
Старый 11.01.2011, 04:12
#9
Любитель
 
Пол: Мужской
Адрес: Киев
Инвестирую в: Свой бизнес
Регистрация: 15.05.2007
Сообщений: 796
Благодарностей: 87
Автор темы Re: Помогите реализовать задачу с базами данных

Тоже вариант, просто я хотел именно кнопками реализовать БД.
Возник новы вопрос по использованию БД.
Предположим у меня в таблице есть переменная A в которой храниться функция вида
<?
include ("https://имя/имя/имя.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; . Будет лич читаться такой анкор поисковиком? Или это будет простой набор символов?

Последний раз редактировалось OrlandO; 11.01.2011 в 19:15. Причина: Добавлено сообщение
OrlandO вне форума
Старый 11.01.2011, 20:40
#10
Интересующийся
 
Пол: Мужской
Адрес: Литва
Регистрация: 17.01.2009
Сообщений: 48
Благодарностей: 16
Re: Помогите реализовать задачу с базами данных

очевидно проблемы с кодировкой.
Auk000 вне форума
Старый 12.01.2011, 01:32
#11
Любитель
 
Пол: Мужской
Адрес: Киев
Инвестирую в: Свой бизнес
Регистрация: 15.05.2007
Сообщений: 796
Благодарностей: 87
Автор темы Re: Помогите реализовать задачу с базами данных

Спасибо КЭП =) Так будет ли читаться поисковыми роботами такой анкор или нет?
OrlandO вне форума
Войдите, чтобы оставить комментарий.
Быстрый переход