1 Востаннє редагувалося Wsewlad (11.05.2017 15:04:20)

Тема: Як отримати правильні дані з БД коли "забув" змінити мову розкладки?

Є текстове поле, починаючи з введення перших двох літер, з'являється випадаючий список міст, які починаються на ваші літери. В БД міста записані кирилицею. Тож зараз система працює тільки при введені літер кирилецею. Потрібно реалізувати пошук, коли, наприклад на англ. розкладці пишеш "rb]d" знаходить "київ". Сайт написаний на Yii.

Код запиту до БД:

$dbC = Yii::app()->db->createCommand();
        $dbC->setFetchMode(PDO::FETCH_OBJ);
        $dbC->select("net_city2.name_ru, population, country_id, code")
        ->from('net_city2, net_country')
        ->where("net_city2.name_ru LIKE '$par%' AND country_id=net_country.id AND code='$location'")
        ->order('population DESC');
        foreach ($dbC->queryAll() as $row) {
            $return[] = $row->name_ru;
        }

Де '$par%' це ці перші літери.
Я поки не знайшов як це реалізовується, може хтось знає як це можна зробити? Або може це взагалі справа JS?

Подякували: Monolith1

2

Re: Як отримати правильні дані з БД коли "забув" змінити мову розкладки?

Якщо задача в лоб онлі для кирилічного пошуку, то чому б не

$trans = ['r' => 'к', 'b' => 'и', ']' => 'ї', 'd' => 'в'];
$par = strtr($par, $trans);

тільки для всього алфавіту.

Або ж при запису назви міста робити ще один запис з англ. розкладкою і при вибірці додати OR нове_поле LIKE $par ....

Можна звичайно перший варіант зробити й на JS

Подякували: Wsewlad, ostap34PHP, Monolith3

3

Re: Як отримати правильні дані з БД коли "забув" змінити мову розкладки?

VTrim написав:

Якщо задача в лоб онлі для кирилічного пошуку, то чому б не

$trans = ['r' => 'к', 'b' => 'и', ']' => 'ї', 'd' => 'в'];
$par = strtr($par, $trans);

Все вже зроблено за нас... :)

4

Re: Як отримати правильні дані з БД коли "забув" змінити мову розкладки?

ost.bregin2014 написав:
VTrim написав:

Якщо задача в лоб онлі для кирилічного пошуку, то чому б не

$trans = ['r' => 'к', 'b' => 'и', ']' => 'ї', 'd' => 'в'];
$par = strtr($par, $trans);

Все вже зроблено за нас... :)

Воно то зроблено, але звичайний трансліт і хибний ввід кириличного слова на англ. розкладці - різні речі.

5

Re: Як отримати правильні дані з БД коли "забув" змінити мову розкладки?

ost.bregin2014 написав:
VTrim написав:

Якщо задача в лоб онлі для кирилічного пошуку, то чому б не

$trans = ['r' => 'к', 'b' => 'и', ']' => 'ї', 'd' => 'в'];
$par = strtr($par, $trans);

Все вже зроблено за нас... :)

Як даний масив з транслітом розбере таке "irjkzh" слово?

6 Востаннє редагувалося Wsewlad (12.05.2017 11:49:10)

Re: Як отримати правильні дані з БД коли "забув" змінити мову розкладки?

В мене все чудово працює з цим

        $trans = [ "q" => "й", "w" => "ц", "e" => "у", "r" => "к", "t" => "е", "y" => "н", "u" => "г", "i" => "ш",
         "o" => "щ", "p" => "з", "[" => "х", "]" => "ъ", "a" => "ф", "s" => "ы", "d" => "в", "f" => "а", "g" => "п",
          "h" => "р", "j" => "о", "k" => "л", "l" => "д", ";" => "ж", "'" => "э", "z" => "я", "x" => "ч", "c" => "с",
           "v" => "м", "b" => "и", "n" => "т", "m" => "ь", "," => "б", "." => "ю", "Q" => "Й", "W" => "Ц", "E" => "У",
            "R" => "К", "T" => "Е", "Y" => "Н", "U" => "Г", "I" => "Ш", "O" => "Щ", "P" => "З", "A" => "Ф", "S" => "І",
             "D" => "В", "F" => "А", "G" => "П", "H" => "Р", "J" => "О", "K" => "Л", "L" => "Д", "Z" => "Я", "X" => "Ч",
              "C" => "С", "V" => "М", "B" => "И", "N" => "Т", "M" => "Ь" ];
         $par = strtr($par, $trans);