parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

А, сначала недопонял, извиняюсь..

osatuk 31.01.2006 01:53 / 31.01.2006 01:54

Тогда могу предложить такой подход..
Создаём функцию которая рекурсивно вычисляет корневой пункт любой категории не зависимо от вложенности:
@getRoot[in][_root_in]
^if($in != 0){
  $_root_in[^table::sql{select * from categories where category_id = $in}]
  ^if($_root_in.parent_id == 0){
    $result[$_root_in.category_id]
  }{
    ^getRoot[$_root_in.parent_id]
  }
}
А потом делаем так:
$step_4[^form:step_4.int(0)]
$cats[^table::sql{select distinct category_id from relations_companies where company_id = $step_4 and category_id != 0}]

^if(^cats.count[] > 0){
  $root_cats[^table::sql{select * from categories where ^cats.menu{category_id = ^getRoot[$cats.category_id]}[ or ]}]
  ^root_cats.menu{
    $root_cats.category_name
  }[<br />]
}
Может не идеально, но задача вроде бы решена, и без использования такого количества селектов..