Приветствую.
На мультиязычном сайте нужно вывести статьи согласно выбранного языка, но если в базе нет статьи с таким языком - нужно выбрать с дефолтовым
Собственно вопрос: какова вероятность срабатывания второго условия в запросе?
может ли получится так, что при наличии статьи с выбранным языком выберется с дефолтовым?
...WHERE `id` = 10 AND (`lang` = '". $lang ."' OR `lang` = 'ru')
ну или вообще как ещё можно это организовать?
vagrand
22.10.2014 - 10:57
Предъявите структуры таблиц
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
bestxp
22.10.2014 - 11:09
в твоем варианте выберутся от 1 если она всего одна на ru или выбранном языке
и 2 если статьи есть на обоих языках
vagrandда самая простая)
ну например:
id | id_cat | lang | text
id - int
id_cat - int
lang - ENUM('en','ru')
text - text
и тогда запрос:
...WHERE `id_cat` = 10 AND (`lang` = '". $lang ."' OR `lang` = 'ru')
sergeiss
22.10.2014 - 11:14
Цитата (rooor @ 22.10.2014 - 10:48) |
может ли получится так, что при наличии статьи с выбранным языком выберется с дефолтовым? |
Да, может.
Чтобы гарантированно выбирать с определенным языком, при наличии такой статьи, нужно иметь четкий порядок. В случае использования условия OR однозначности нет. Поэтому может быть выбрана статься с любым из языков (при сохранении структуры запроса).
Твоя задача, это сделать эту самую однозначность. Вот насчет средств, тут подумать надо. Опять же, зависит от того, выбираешь ты только одну статью или несколько сразу и у каждой своя специфика.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
vagrand
22.10.2014 - 13:26
rooor
А речь идет об одной и той жен статье но на разных языках? Или речь идет о разных?
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
ну по факту получается что это 2 записи в таблице
у первой поле lang == ru, у второй - en
статья выбирается по определенным параметрам, остается загвоздка в выборе языка
если пользователь выбрал en, но в базе такой статьи нет, то надо ему показать ru
S.Chushkin
22.10.2014 - 13:59
Цитата (rooor @ 22.10.2014 - 10:48) |
Приветствую. На мультиязычном сайте нужно вывести статьи согласно выбранного языка, но если в базе нет статьи с таким языком - нужно выбрать с дефолтовым Собственно вопрос: какова вероятность срабатывания второго условия в запросе? может ли получится так, что при наличии статьи с выбранным языком выберется с дефолтовым?
...WHERE `id` = 10 AND (`lang` = '". $lang ."' OR `lang` = 'ru')
ну или вообще как ещё можно это организовать? |
1) Условия в WHERE обрабатываются как придётся (зависит от оптимизатора). Т.е. гарантии порядка нет.
2) Если MySQL, то в нём выборка с приоритетом это бооольшая проблема. :(
В общем случае, решается через подзапрос с использованием функций (FIELD() etc).
_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.