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
Форумы портала PHP.SU :: Версия для печати :: Тонкости синтаксиса
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Тонкости синтаксиса

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

1. unrecovered - 07 Октября, 2016 - 13:13:56 - перейти к сообщению
Приветствую. Есть у меня вот такой кусок кода:
PHP:
скопировать код в буфер обмена
  1. if($_SESSION["is_auth"]){
  2.         $query = "SELECT * FROM `menu_cont` where parent=? and authority=('' or ?)";
  3.         $res = DBAcc::getdata($query, array($args[1], $_SESSION["kind"]), "ALL");      
  4. }else{
  5.         $query = "SELECT * FROM `menu_cont` where parent=? and authority=''";
  6.         $res = DBAcc::getdata($query, array($args[1]), "ALL");
  7. }
  8.  

Задача его следующая: если пользователь не авторизован, нужно отобразить ему только публичные пункты меню(те, у которых в графе authority - пусто). Если пользователь авторизован, то ему показываются публичные пункты и пункты, для которых kind пользователя(его "группа") совпадает с authority страницы. Вопрос в следующем: почему если я убираю условие и сокращаю код до
PHP:
скопировать код в буфер обмена
  1.         $query = "SELECT * FROM `menu_cont` where parent=? and authority=('' or ?)";
  2.         $res = DBAcc::getdata($query, array($args[1], $_SESSION["kind"]), "ALL");
  3.  

, который впринципе также должен работать, то у неавторизованных пользователей какие-либо пункты меню перестают отображаться вообще. По идее, если для сессии не задано значение is_auth, то оно же возвращает null? Да и в любом случае, что бы ни возвращало, or в условии должно обеспечить выборку страниц с пустым authority? Непоняяяятно...

 

Powered by ExBB FM 1.0 RC1