Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

s_list_class с фильтрацией по полю

10.11.2009, 15:54
Хыиуду

Зарегистрирован:
2009-10-21
Сообщений: 156

Задача, конечно, уже баянная: сделать s_list_class с фильтрацией по полю MyField.
Делаю s_list_class(xxx, yyy, "MyField=3"), добавляю в системные настройки $query_where.=" and a.MyField='$MyField'", но получаю от ворот поворот. Использовав $db->vardump, добрался до самых косточек. Вот как выглядел запрос, отрабатывавший в s_list_class:
SELECT
SQL_CALC_FOUND_ROWS a.Name,
a.Description,
a.xxxxxxxx,
<...>
tbl1215.`Название_классификатора_Name` AS tbl1215name,
tbl1215.`Название_классификатора_ID` AS tbl1215id,
<...>
FROM (`MessageXXX` AS a )
LEFT JOIN `Classificator_Название_классификатора` AS tbl1215 ON a.`MyField` = tbl1215.`НазваниеКлассификатора_ID`
LEFT JOIN ......
WHERE 1
AND <...>
AND a.MyField='3'
ORDER BY a.`Priority` DESC, a.`LastUpdated` DESC LIMIT 0,20
)

)
Стало быть, для того, чтобы сделать нормальную фильтрацию, нужно руками достать из базы данных имя классификатора, соответствующего этому полю.
Вопрос: так и надо делать, или существует менее хирургический путь вывести список объектов с их шаблоном вывода, отфильтровав при этом по одному-единственному полю?
11.11.2009, 09:52
DiGGy
DiGGy
DiGGy

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

Хыиуду писал(а):
Делаю s_list_class(xxx, yyy, "MyField=3")

Неверно, надо вот так:
Код:
s_list_class(xxx, yyy, "&MyField=3")


Temet nosce...
11.11.2009, 11:12
Хыиуду

Зарегистрирован:
2009-10-21
Сообщений: 156

Ошибка все равно оказалась в том, что надо писать
$query_where.="a.MyField=$MyField", а не
$query_where.="and a.MyField=$MyField"
26.11.2009, 19:53
Гость
Гость

Хыиуду писал(а):
Ошибка все равно оказалась в том, что надо писать
$query_where.="a.MyField=$MyField", а не
$query_where.="and a.MyField=$MyField"


подскажи плз а MyField у тя поле которое есть в каком то компаненте либо ет поле ты сам создал??

может быть подскажет кто
Код:
".s_list_class(135,132,"&naminaciya=1&podnaminaciya=3")."

на странице выводится все, а в админке нет, в чем может быть трабл?

посути если в в разделе 135 забиты какието данные, то они и должны вызыватся через s_list_class в админке тоже
27.11.2009, 09:07
Хыиуду

Зарегистрирован:
2009-10-21
Сообщений: 156

Странный вопрос. Естественно, поле внутри компонента (иначе оно не было бы в таблице а), но я его сам создал, когда создавал компонент.
По вопросу - проверьте, нет ли где поблизости какой-нибудь проверки на $admin_mode
198 196 2009-11-27 09:07:55 7808
Описание проекта