вывод многоуровневых разделов,категорий в smarty

YouStm

Новичок
вывод многоуровневых разделов,категорий в smarty

Всем доброго времени суток, вот не могу сообразить как вывести в smarty категории из базы данных а точнее:

есть таблица news_cat у неё поля:
PHP:
cat_id |   cat_name       | cat_bid
-------+------------------+----------
1      | Магазины         |    0
2      | Автомобили       |    0
3      | БМВ              |    2
4      | AUDI             |    2
5      | СИБИРЬ АВТО      |    1
6      | КМВ АВТО         |    1
7      | X5               |    3
8      | 250л.с.          |    7
9      | 100л.с.          |    7
ну вот что то примерно такое... т.е. категории могут быть бесконечными

как реализовать вывод в SELECT с помощью
PHP:
php
и
PHP:
smarty
что бы вид был

PHP:
Первая категрия
      Подкатегория
           Подподкатегория
               Подподпод категория
                    ......
                     последняя категория
Вторая категория
       Подкатегория
           Подподкатегория
               Подподпод категория
                    ......
                     последняя категория
не могу найти алгоритм... помоги пжлста...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
По логике мне кажется надо делать связанные селекты. В твоем случае они не могут быть бесконечными. Плюс у тебя ужасная структура БД.
 

brook

Новичок
По первому вопрос в поиск - на форуме миллионы реализаций деревьев в SQL уже описаны.
По второму - сделай шаблон - который будет показывать список категорий и инклюдить сам себя если есть под категории в категории.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Реализация у него вполне нормальная для дерева, только вот он хранит кучу разных сущностей в одной таблице, что не есть хорошо.
 

YouStm

Новичок
c0dex
а в чём её ужось?

brook
да вот поискал по инету там говорят про Рекурсию
PHP:
Title: {$object.title}
{foreach item='obj' from=$object.items}
{include file='this_template_path.tpl' object=$obj}
{/foreach}
тока при этом получается что зацикливается и всё... 404!

c0dex
есть предложения по улучшения таблицы? мб создать вторую?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
YouStm
Не просто вторую, а вторую-третью и т.д.

Есть сущность магазин, к ней привязаны сущности продавцов, к которым привязаны модели, которые в свою очередь имеют наборы характеристик.

Рекурсию я бы реализовывал как плагин для смарти.
 

AmdY

Пью пиво
Команда форума
c0dex +1
гугл smarty tree plugin
и получаем готовый.
но зачастую только безнраничная вложенность нужна очень редко, 3-4 уровня - максимум, дальше неюзабельно получится. поэтому можно и покопипастить foreach ... foreach .. foreach
 

Вурдалак

Продвинутый новичок
Автор оригинала: YouStm
тока при этом получается что зацикливается и всё...
— очевидно, ты неправильно составляешь дерево.

Поставь проверку
Код:
{if is_array($object)}
...
{/if}
 

YouStm

Новичок
AmdY
Юзабильно не юзабильно решаю не я)) заказчик захотел неограниченное дерево.. я делаю)

Вурдалак
спс за совет.


ВСЕМ огромное спс вопрос решён через
PHP:
$smarty->register_function
 
Сверху