Beauty 172 Posted March 12, 2018 Report Share Posted March 12, 2018 подскажите пожалуста в таблице options есть название на русском и транслитом, потер случайно все названия на транслите как бы скопировать их обратно из русского? UPDATE db_options SET value = translit копирует из value в translit на русском, а как сделать чтобы перевело само на транслит? Quote Link to post Share on other sites
kuzovbmw 585 Posted March 12, 2018 Report Share Posted March 12, 2018 функция : function rus2translit($string) { $converter = array( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ь' => '\'', 'ы' => 'y', 'ъ' => '\'', 'э' => 'e', 'ю' => 'yu', 'я' => 'ya', 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z', 'И' => 'I', 'Й' => 'Y', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O', 'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch', 'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'', 'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya', ); return strtr($string, $converter); } Quote Link to post Share on other sites
Beauty 172 Posted March 12, 2018 Author Report Share Posted March 12, 2018 на php я видел, а как это мне поможет перенести из столбика options в столбик translit в phpmyadmin? Katyara 1 Quote Link to post Share on other sites
kuzovbmw 585 Posted March 12, 2018 Report Share Posted March 12, 2018 Ну у Вас где то же формируются названия эти, вот и скормите функцию в переменную а переменную в то место где формируются названия и сделайте либо insert либо update функций таких чисто в самом mysqli не встречал Quote Link to post Share on other sites
Beauty 172 Posted March 12, 2018 Author Report Share Posted March 12, 2018 вот ребята подсказывают, но не пойму как это сделать через UPDATE а не CREATE чтобы скопировать из одного столбца в другой CREATE TABLE IF NOT EXISTS `translit` ( `t` varchar(3) NOT NULL, `f` varchar(15) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `translit` (`t`, `f`) VALUES ('a', 'а'), ('b', 'б'), ('v', 'в'), ('g', 'г'), ('d', 'д'), ('e', 'е'), ('e', 'ё'), ('zh', 'ж'), ('z', 'з'), ('i', 'и'), ('y', 'й'), ('k', 'к'), ('l', 'л'), ... и т.д. Quote Link to post Share on other sites
kuzovbmw 585 Posted March 12, 2018 Report Share Posted March 12, 2018 ну тут немного не то что Вам нужно. Вам то нужен транслит а не найти и заменить значение 1 буквы, врать не буду на чистом запросе это никогда не делал. А о чем мы говорим самопис или cms какая то :? Quote Link to post Share on other sites
Beauty 172 Posted March 12, 2018 Author Report Share Posted March 12, 2018 самопис, случайно хлопнул таблицу с транслитом (таблица отвечающая за URL где они автоматом формировались) осталось на русском только, надо пересоздать в общем по новой или скопировать value > translit через phpmyadmin Quote Link to post Share on other sites
kuzovbmw 585 Posted March 12, 2018 Report Share Posted March 12, 2018 ну так у Вас где то все равно чпу формируются, вот там и сделайте как я сказал и будет все норм, функция сама сделает транслит и писанет в базу, у Вас где то в case создается все равно логика в контроллере. Там и пропищите на чпу, это самый простой вариант я так всегда делаю gefard 1 Quote Link to post Share on other sites
Beauty 172 Posted March 12, 2018 Author Report Share Posted March 12, 2018 вот так починил # mysqlcheck -r -A -uroot -p пересоздались индексы прост) но все равно спасибо Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.