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 :: Обработка полученной информации перед выводом пользователю

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: подскажите как сделать, что-то не соображу. Может я тупею =)))
Uchenik
Отправлено: 23 Августа, 2011 - 07:42:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Возможно эта ситуация уже здесь описывалась, но я не нашёл. У меня в БД есть таблица Config, в которую записываются конфигурации структуры сайта и т.д. Ну просто чтобы не писать все параметры всех страниц в коде, я решил сделать их в БД и просто вытягивать нужное.
Структура таблицы
Спойлер (Отобразить)

в этой таблице есть такая запись
Спойлер (Отобразить)

И вытягивается всё таким запросом
select variable from config where category='Menu' and Access=".$_SESSION['access']." and Location={$_SERVER['REQUEST_URI']}
Всё хорошо, всё прекрасно работает, но
пользователю выводится меню вот в таком виде
Спойлер (Отобразить)


Как теперь сделать так, чтобы перед выводом из БД эти все переменные заменялись в зависимости от языка пользователя? Т.е. выводились не сами переменные, а их значение в соответствии с настройками вошедшего юзера? Имеются несколько Lang файлов
примерно такого содержания
Спойлер (Отобразить)
 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 07:54:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)






-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 08:02:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




т.е. как-то так?

PHP:
скопировать код в буфер обмена
  1. $q="select variable from config where category='Menu' and Access=".$_SESSION['access']." and Location={$_SERVER['REQUEST_URI']}";
  2. $result=mysql_query($q);
  3. $myrow=mysql_fetch_array($result);
  4. eval ("\$myrow['variable'] = \"$myrow['variable']\";");
  5. echo $myrow['variable'];

(Отредактировано автором: 23 Августа, 2011 - 08:05:30)

 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 08:05:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)




Uchenik
как-то так, да)


-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 08:05:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 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

(Отредактировано автором: 23 Августа, 2011 - 08:06:01)

 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 08:07:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)




какая строка в $myrow['variable'] содержится?


-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 08:08:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




variable это поле в БД, там лежит
Спойлер (Отобразить)
 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 08:10:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)




Uchenik
так вы сначала переменные все из этого кода вытащите, а потом уже к каждой eval делайте


-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 08:11:16
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Всмысле? Не понял
 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 08:12:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)




надо чтобы было, например
$var[1] = "$lang['link.calls']"
$var[2] = "$lang['link.calls.desc']"
и т.д.
а потом к каждому $var[] eval применять


-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 08:14:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Хмм... по такой логике нет никакого смысла записывать всё в БД, если в таком случае приходится применять кучу всяких проверок и в результате код получается ещё более громозтким, я просто думал что вместо того чтобы писать меню прямо на странице, можно его записать в БД и оттуда вытягивать, а теперь получается что его нельзя просто вытянуть, нужно кщё и обработать?
 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 08:29:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)




Uchenik
вообще де-факто стандарт - меню в отдельном файле, который инклюдится везде


-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 08:45:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Это конечто интересное предложение, но я это уже пробовал, и как-то не очень удобно получается, когда у меня больше 20 разных меню, которые должны выводится в зависимости от вошедшего пользователя, его местоположения и выбранного языка, поэтому создание отдельного меню файла отпало сразу после начала создания файла самого меню, и файла, который будет проводить все эти проверки, слишком уж много параметров. И тем более планируется что меню можно изменять из админки, а это без БД я пока не представляю, так как с AJAX я не дружу, а вытягивать файл с сервера чтобы переделать менюшку слишком много гемора. Можно конечно попробовать поэкспериментировать с ковычками в самой записи таблицы, чтобы переменные воспринимались как переменные, а не как часть текстового сообщения

(Отредактировано автором: 23 Августа, 2011 - 08:47:35)

 
 Top
КЫР
Отправлено: 23 Августа, 2011 - 09:07:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 168
Дата рег-ции: Авг. 2011  
Откуда: Новосибирск


Помог: 2 раз(а)




Uchenik
тогда предлагаю не парить мозг и бд хранить пункты меню со ссылками, язык, к которому относится этот пункт и права доступа


-----
Fuck you guys, I'll going home
 
 Top
Uchenik
Отправлено: 23 Августа, 2011 - 09:15:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Тоже не вариант. Я заранее не знаю какой язык у пользователя, и какие у него права доступа, и на какой странице он находится. При построении меню планировалось что БД просто выведет нужное меню, а дальше просто переведу на нужный язык. Или мне придётся в самой таблице писать все записи несколько раз, чтобы учесть все возможные варианты, огромная таблица получится. 10 Location, 5 уровней доступа, 3 возможных языка пользователя, это уже 150 записей в таблице, не считая того что нужно ещё учесть другие параметры конфигурации вошедшего пользователя.

(Отредактировано автором: 23 Августа, 2011 - 09:16:21)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB