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

Не работает условие в поле редактирования компонента "Объект в списке"

Новый топик
18.11.2010, 18:17
Ответить | Цитировать
Гость
Гость

В поле "Объект в списке" пишу условие "Выводить под заголовком соответствующего объекта на странице в списке такую-то надпись, если значение поля $f_Draftpublic объекта в таблице компонента не равно 0 (нулю)":

Цитата:
Код:
Код:
";
if ($f_Draftpublic != 0) {
$nadpis = "Такая-то надпись";
 }
$result .= "
".opt( $f_Title , "$f_Title $nadpis" )."

Но при наличии в таблице со значением 1 (единица) только нескольких (не всех) объектов,
надпись выводится все равно под всеми объектами (даже если у них значение 0),
т.е. условие как-бы не работает.

Скажите пожалуйста, что я не так делаю?
18.11.2010, 19:24
Ответить | Цитировать
Гость
Гость

Очень срочно нужно, кто-нибудь пожалуйста помогите разобраться.
Какая-то ж... получается, при прописывании своих условий в поле "Объект в списке".
19.11.2010, 00:28
Ответить | Цитировать
Гость
Гость

Я думаю нужно делать проверку по !==
19.11.2010, 14:14
Ответить | Цитировать
Гость
Гость

Спасибо, но проверка по !== не помогла.

Написал еще по-другому в поле "Объект в списке", по неткатовски:

".opt($f_Draftpublic != '1', "Такая-то надпись")."
или так:
".opt_case($f_Draftpublic != '1', "Такая-то надпись", "Не выводить надпись")."

То есть, если значение в поле 2, то выводить надпись, если значение 1, то не выводить.
Или по-другому: для всех объектов со значением отличным от 1 выводить "Такую-то надпись".

Тоже не работает, в таблице в поле Draftpublic имеются объекты со значениями как 1 так 2, но в итоге все равно выводятся все объекты с этой "Такой-то надписью". Если поменять оператор сравнения до наоборот, то у всех объектов эта надпись вообще не выводится. Насколько я понимаю, что-то со циклом, если не происходит сравнения объектов в цикле, а происходит похоже сравнение только первого объекта и по нему присваивается все остальным. Ну это первое что в голову приходит логически (не программист, дизайнер я), но пытаюсь эти дебри понять улыбка

Draftpublic - это поле с типом "Список", состоит всего из двух значений, в MySql его тип int(11).
В таблице в базе посмотрел, все значения по объектам корректно записаны: 1 или 2.
Операторы сравнения всевозможные подставлял - бесполезно.

Так почему-же не работает? Вроде мелочь такая, а не дает дальше делать.
Админы отзовитесь пожалуйста.
19.11.2010, 20:22
Ответить | Цитировать
Гость
Гость

Разобрался сам.
За место $f_Draftpublic (имя элемента списка) надо было указывать $f_Draftpublic_id (id элемента списка).
$f_Draftpublic думал, что выводит именно как в базе записано - 1 или 2, тупо смотря на эти числовые значения в таблице базы улыбка забыл, то в неткате все уже предусмотрено приставками и суффиксами.
22.11.2010, 12:30
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

значения переменной у вас могут быть разные - как 0 так и null , и проверку надо делать соотв-юю

Temet nosce...
198 196 2010-11-22 12:30:33 10856
Описание проекта