Регистрация
Вход через соцсети
Восстановление пароля

Странная обработка условия c $current_user

Новый топик
25.03.2007, 10:40
Ответить | Цитировать
Гость
Гость

Здравствуйте.

Есть следующая ситуация - в макете дизайна есть форма входа для пользователя. После того, как пользователь вводит свои данные, эта форма меняется на личное обращение с подсчетом количества статей, принадлежащих этому юзеру. Условие изменения в макете:
Код:
".opt_case(!$current_user,"
<form action=/netcat/modules/auth/ method=post>
<input type=hidden name=AuthPhase value=1>
........................................
</form>","<p>$current_user[Name] $current_user[FatherName]
.................
".listQuery("select count(*) as count from Message84 where Owner_ID=$current_user[User_ID]","$data[count]")."
...........
")."


И вроде все в порядке, кроме одного - если пользователь не вошел, то запрос listQuery все равно вызывается, естественно с ошибкой, что не может найти User_ID. При этом, условие !$current_user отрабатывается верно и выводится форма ввода логина и пароля. Кто сталкивался с подобным?
25.03.2007, 15:38
Ответить | Цитировать
Гость
Гость

при генерации страницы listQuery выполняется раньше, и результат выводится уже в зависимости от opt()

В данном случае приходится делать так:

Код:

".opt_case(!$current_user,"
<form action=/netcat/modules/auth/ method=post>
<input type=hidden name=AuthPhase value=1>
........................................
</form>","<p>$current_user[Name] $current_user[FatherName]
.................
".opt($current_user && $count=listQuery("select count(*) as count from Message84 where Owner_ID=$current_user[User_ID]","$data[count]"),"$count")."
...........
")."
25.03.2007, 20:23
Ответить | Цитировать
resident
Веб-группа «Дабл Ю»

Зарегистрирован:
2005-01-10
Сообщений: 336

в вашем примере в запросе нужно значение переменной взять в кавычки, тогда ошибки не будет
лично я использую opt и opt_case только для каких-нибудь вычислений чтоб не разрывать шаблон или макет
гораздо удобнее использовать тринарный оператор ".(expr?"true":"false")."

Код:

".(!$current_user?"
<form action=/netcat/modules/auth/ method=post>
<input type=hidden name=AuthPhase value=1>
........................................
</form>":"<p>$current_user[Name] $current_user[FatherName]
.................
".listQuery("select count(*) as count from Message84 where Owner_ID=$current_user[User_ID]","$data[count]")."
...........
")."
27.03.2007, 06:16
Ответить | Цитировать
Гость
Гость

Спасибо.
198 196 2007-03-27 06:16:07 8919
Описание проекта