разрабатываю функциона глоссарий. Нужен совет

Статус
В этой теме нельзя размещать новые ответы.

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Цель: одно определение на русском, второе на английском, страница с описанием слова одна и та же, доступна по ссылке с английского варианта и русского.
Как это сделать, не понимаю?
Есть модуль, CMS Danneo. Сейчас работает так. Выбирается категория (буква), то ли русская, то ли английская.
Как я понимаю, нужно два списка выпадающих - русский и английский алфавит, а также два поля для того и другого языка. При добавлении в базу присваивается id для записи. У записи два поля с названием и два с категорией. Когда запрос выводит по нужной букве все названия, берется из нужного варианта названия.
Как выбрать из какого поля брать, из русского или английского, как определить язык в запросе? Т.е. если я делаю запрос по букве "S", то как дать понять скрипту, что нужно брать темрин из поля с англ. названием и тоже самое наооборот, с русской буквой?
Или не стоит этим заморачиваться и выводить сразу два слова :)?
Что еще не учел?
 
если я правильно понимаю суть вопроса: алфавиты у английского и русского языков совсем разные, поэтому ты не ошибешься если будешь делать выборку одновременно по обоим полям:

select * from table where vc_russian_word like 'S%' or vc_english_word like 'S%'

в любом случае этот запрос вернет только одну запись для каждого слова.
 
diavolic like - яно не из быстрых операций и делать поиск по 2 столбцам ( когда нужно фактически по одному ) явно не лучшее решение


Как выбрать из какого поля брать, из русского или английского, как определить язык в запросе?
способ 1) скорее всего у вас есть какая-то форма c выпадающим списком букв. Назначив каждому списку разные именна на стороне сервера можно будет определить какая переменная не пуста ( какой список не пустой ) ну и по соответствующему полю в БД искаить

способ 2) можно проверить код символа, у кириллицы и латинских букв они разные
------------
ну и наверно было бы неплохо к записям в БД добавить еще одно поле "код первого символа слова" ( так как у вас 2 языка, то полей будет два) и поиск осуществлять по данному полю, а не по полю с текстовым значениям слова оператором like
 
к записям в БД добавить еще одно поле "код первого символа слова" ( так как у вас 2 языка, то полей будет два) и поиск осуществлять по данному полю, а не по полю с текстовым значениям слова оператором like
Ну скорость
PHP:
SELECT * FROM $lang_tbl WHERE $word like '".$bukva."%'
и
PHP:
SELECT * FROM $lang_tbl WHERE bukva='".$bukva."'
(где $lang_tbl - название таблицы со словами, $word - название столбца со словами (rus/eng))
можно замерить
Если разность времени выполнения мала, то, думаю, нет смысла держать в БД еще два столбца, которые надо еще и заполнять...
Можно вообще все слова (русские и английские) держать в одном столбце одной таблицы, тогда переменная $word не будет меняться и не надо будет проверять букву на принадлежность к языку.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху