Рекурсия, построение дерева каталога.

Alkeeper

Новичок
Рекурсия, построение дерева каталога.

Сразу скажу, что мне не нужно готовое решение, а только некоторая помощь, чтоб войти в нужное русло.

Проблема:
Это должен быть каталог. Вложенность подкатегорий неограничена. Элементы (допустим ссылки) должны лежать только на последнем уровне.

Я сделал такие таблицы:

cat
PHP:
+----+------+
| id | name |
+----+------+
links (связи)
PHP:
+----+--------+-------+
| id | parent | child |
+----+--------+-------+
| 1  | null   | 1     |
+----+--------+-------+
| 2  | 1      | 2     |
+----+--------+-------+
т.е. подкатегория 2 - дочерняя по отношению к 1-й, а та, в свою очередь непосредственно под корнем.
2-я также может содержать подкатегории или элементы.

elem (элементы)
PHP:
+----+--------+------+-------------+
| id | parent | name | description |
+----+--------+------+-------------+
| 1  | 2      | bla  | bla-bla-bla | 
+----+--------+------+-------------+
т.е. Элемент 1 содержится в категории 2 (которая является вложенной).

Так вот собственно задача:
Нужно выстроить дерево категорий каталога каталога, чтоб потом соорудить из него xml-ку.

Как лучше поступить? с верхних уровней проверять или с нижних? или тут можно и без рекурсии?

Спасибо
 

Demiurg

Guest
Это не дерево а граф, в дереве родителем узла может быть только один узел.
 

Alkeeper

Новичок
А это так и есть, у каждого элемента (будь то подкатегория или запись о чем-то (напр. товаре)) только один родитель - категория старшего порядка
 

Demiurg

Guest
При твоей структуре базы дела обстоят по другому. В этом форуме уже много раз обсуждали принципы построения деревьев.
 
Сверху