| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Храрение и вывод переменных из базы |
| Автор: chiffa 26.8.2010, 13:56 |
| Добрый день. У меня в базе хранятся переменные $_lang ['a'], $_lang ['b'], $_lang ['c'] После авторизации подключается языковый файл и пользователю должно вывести значения $_lang ['a'], $_lang ['b'], $_lang ['c'], но вместо это выводится просто текст "$_lang ['a']" "$_lang ['b']" "$_lang ['c']" вопрос как преобразовать этот текст в переменные? Заранее спасибо за ответ |
| Автор: CruorVult 26.8.2010, 14:11 | ||
|
| Автор: chiffa 26.8.2010, 14:37 |
| Спасибо за ответ! Но почему то после обработки eval("\$_lang ['a'] = \"$_lang ['a']\";"); возвращает Array ['a]... не подскажешь почему так? |
| Автор: patap 26.8.2010, 14:42 |
| может стоит все переделать? без хранения имен переменных в бд. Или если так уж хочется, то может лучше через сериализацию (http://ua.php.net/serialize)? |
| Автор: enoff 26.8.2010, 14:45 | ||
chiffa, Что находится в базе данных? Что находится в языковом файле?
и что вы хотите добиться выполнением этого кода, который выведет parse error? Присвоение переменной $_lang['a'] строки "$_lang['a']"? и лучше выбрать что-то одно, база или файлы |
| Автор: Sanchezzz 26.8.2010, 15:00 |
| файлы проше? в глобале и через фукцию нужно слово запрашивал. допустим при загрузки некого модуля грузится и класс и файл с языком который можно слить в global $lang_; а достовать через функцию. function getMessage($line = ''){ global $lang_; $line = ($line == '' OR !empty($lang_[$line])) ? FALSE : $lang_[$line]; return $line; } <input type="button" value="<?=getMessage('Back')?>"> Ну если так нужно массивы в БД можно дедовским способом serialize(array) , unserialize(string) |
| Автор: chiffa 26.8.2010, 15:00 |
| в базе находится $_lang ['a'] я языковом файле $_lang ['a']='ТЕСТ'; и вывожу я $_lang ['a'] из базы, которая должна стать переменной и замениться на текст из языкового файла. Как с помощью eval это правильно сделать?... |
| Автор: enoff 26.8.2010, 15:09 |
в этом случае лучше заменять с помощью регулярок. И в тексте использовать не $_lang['a'], а какие-нибудь специальные значения, чтобы удобно было заменять. Или, думаю, лучший вариант, пересмотреть вашу систему... |
| Автор: gta4kv 26.8.2010, 16:41 | ||||||
С помощью eval — делать вообще не правильно. Смотрите на регулярки. Так же, хранить ланг в бд, когда он уже хранится в файле — смысла не имеет.
$app->lang[ /**/ ] просто ассоциативный массив.
Не надо учить людей тому, чего делать не нужно - а то послушают еще ведь. |
| Автор: chiffa 26.8.2010, 23:49 |
| gta4kv, спасибо за ответ. ТОлько что такое singleton::getInstance? и если не затруднит на конкретном примере можно? |
| Автор: gta4kv 27.8.2010, 00:00 |
| singleton это излишки моего кода, для наглядности. |