Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Обработка полученной информации перед выводом пользователю
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
Возможно эта ситуация уже здесь описывалась, но я не нашёл. У меня в БД есть таблица Config, в которую записываются конфигурации структуры сайта и т.д. Ну просто чтобы не писать все параметры всех страниц в коде, я решил сделать их в БД и просто вытягивать нужное.
Структура таблицы
И вытягивается всё таким запросом
select variable from config where category='Menu' and Access=".$_SESSION['access']." and Location={$_SERVER['REQUEST_URI']}
Всё хорошо, всё прекрасно работает, но
пользователю выводится меню вот в таком виде
Как теперь сделать так, чтобы перед выводом из БД эти все переменные заменялись в зависимости от языка пользователя? Т.е. выводились не сами переменные, а их значение в соответствии с настройками вошедшего юзера? Имеются несколько Lang файлов
примерно такого содержания
Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011 Откуда: Новосибирск
Помог: 2 раз(а)
Uchenik
как-то так, да)
----- Fuck you guys, I'll going home
Uchenik
Отправлено: 23 Августа, 2011 - 08:05:37
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
выводит
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in Z:\home\{Location}\www\parameters.php on line 6
Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011 Откуда: Новосибирск
Помог: 2 раз(а)
Uchenik
так вы сначала переменные все из этого кода вытащите, а потом уже к каждой eval делайте
----- Fuck you guys, I'll going home
Uchenik
Отправлено: 23 Августа, 2011 - 08:11:16
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
Всмысле? Не понял
КЫР
Отправлено: 23 Августа, 2011 - 08:12:56
Частый гость
Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011 Откуда: Новосибирск
Помог: 2 раз(а)
надо чтобы было, например
$var[1] = "$lang['link.calls']"
$var[2] = "$lang['link.calls.desc']"
и т.д.
а потом к каждому $var[] eval применять
----- Fuck you guys, I'll going home
Uchenik
Отправлено: 23 Августа, 2011 - 08:14:48
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
Хмм... по такой логике нет никакого смысла записывать всё в БД, если в таком случае приходится применять кучу всяких проверок и в результате код получается ещё более громозтким, я просто думал что вместо того чтобы писать меню прямо на странице, можно его записать в БД и оттуда вытягивать, а теперь получается что его нельзя просто вытянуть, нужно кщё и обработать?
КЫР
Отправлено: 23 Августа, 2011 - 08:29:59
Частый гость
Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011 Откуда: Новосибирск
Помог: 2 раз(а)
Uchenik
вообще де-факто стандарт - меню в отдельном файле, который инклюдится везде
----- Fuck you guys, I'll going home
Uchenik
Отправлено: 23 Августа, 2011 - 08:45:56
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
Это конечто интересное предложение, но я это уже пробовал, и как-то не очень удобно получается, когда у меня больше 20 разных меню, которые должны выводится в зависимости от вошедшего пользователя, его местоположения и выбранного языка, поэтому создание отдельного меню файла отпало сразу после начала создания файла самого меню, и файла, который будет проводить все эти проверки, слишком уж много параметров. И тем более планируется что меню можно изменять из админки, а это без БД я пока не представляю, так как с AJAX я не дружу, а вытягивать файл с сервера чтобы переделать менюшку слишком много гемора. Можно конечно попробовать поэкспериментировать с ковычками в самой записи таблицы, чтобы переменные воспринимались как переменные, а не как часть текстового сообщения
Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011 Откуда: Новосибирск
Помог: 2 раз(а)
Uchenik
тогда предлагаю не парить мозг и бд хранить пункты меню со ссылками, язык, к которому относится этот пункт и права доступа
----- Fuck you guys, I'll going home
Uchenik
Отправлено: 23 Августа, 2011 - 09:15:26
Частый гость
Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011
Помог: 1 раз(а)
Тоже не вариант. Я заранее не знаю какой язык у пользователя, и какие у него права доступа, и на какой странице он находится. При построении меню планировалось что БД просто выведет нужное меню, а дальше просто переведу на нужный язык. Или мне придётся в самой таблице писать все записи несколько раз, чтобы учесть все возможные варианты, огромная таблица получится. 10 Location, 5 уровней доступа, 3 возможных языка пользователя, это уже 150 записей в таблице, не считая того что нужно ещё учесть другие параметры конфигурации вошедшего пользователя.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.