Копирование полей в базе mysql
Для реализации мне потребовалось создать в базе поле titleEn c английским вариантом русского заголовка страницы title.
в phpmyadmin создаем новое поле titleEn в нужной таблице.
И копируем туда данные из русской версии заголовков:
1 |
UPDATE `table_name` SET `titleEn`=`title` |
UPDATE `table_name` SET `titleEn`=`title`
Транслитерация заголовков в базе
Для перевода используем простую функцию
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function translitIt($str){ $tr = array( "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d", "Е"=>"e","Ё"=>"yo","Ж"=>"j","З"=>"z","И"=>"i", "Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n", "О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t", "У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"c","Ч"=>"ch", "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"", "Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b", "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j", "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y", "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", " "=> "-", "."=> "", "/"=> "-" ); return strtr($str,$tr); } |
function translitIt($str){ $tr = array( "А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d", "Е"=>"e","Ё"=>"yo","Ж"=>"j","З"=>"z","И"=>"i", "Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n", "О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t", "У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"c","Ч"=>"ch", "Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"", "Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b", "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j", "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y", "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya", " "=> "-", "."=> "", "/"=> "-" ); return strtr($str,$tr); }
После чего убираем лишние символы
1 2 |
$fl = translitIt($fl); $fl = preg_replace('/[^A-Za-z0-9_\-]/', '', $fl);} |
$fl = translitIt($fl); $fl = preg_replace('/[^A-Za-z0-9_\-]/', '', $fl);}
Заголовок получает вид: kak-propisat-klyuch-v-standartnoy-signalizacii из исходного Как прописать ключ в стандартной сигнализации
Автоматизируем процесс
Можно создать скрипт, для автоматической замены всего поля таблицы на транслит
Полезные для этого дела запросы к базе:
Вывод всех таблиц в базе database_name
1 |
$sql = "SHOW TABLES FROM database_name"; |
$sql = "SHOW TABLES FROM database_name";
Вывод всех полей в таблице table_name
1 |
$sql = "SHOW COLUMNS FROM `{table_name}`"; |
$sql = "SHOW COLUMNS FROM `{table_name}`";
и соответственно запись новых значений в поля базы
Обновление в таблице table_name установить значение поля field равным fieldvalue где значение поля field равно fieldrus(то есть старому значению)
1 |
$editfl = mysql_query ("UPDATE table_name SET field='fieldvalue' WHERE field='fieldrus'"); |
$editfl = mysql_query ("UPDATE table_name SET field='fieldvalue' WHERE field='fieldrus'");
Далее
Теперь мы имеем валидный адрес для каждой страницы сайта, к которому мы можем обращатся через базу и настроить красивые url’ы через rewrite_modeule apache. to be continued…