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

Тема в разделе "PHP", создана пользователем danneo, 7 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. danneo

    danneo Честный

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

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    если я правильно понимаю суть вопроса: алфавиты у английского и русского языков совсем разные, поэтому ты не ошибешься если будешь делать выборку одновременно по обоим полям:

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

    в любом случае этот запрос вернет только одну запись для каждого слова.
     
  3. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    diavolic like - яно не из быстрых операций и делать поиск по 2 столбцам ( когда нужно фактически по одному ) явно не лучшее решение


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

    способ 2) можно проверить код символа, у кириллицы и латинских букв они разные
    ------------
    ну и наверно было бы неплохо к записям в БД добавить еще одно поле "код первого символа слова" ( так как у вас 2 языка, то полей будет два) и поиск осуществлять по данному полю, а не по полю с текстовым значениям слова оператором like
     
  4. B0nuse

    B0nuse Постоялец

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