Создаем дерево каталога

  • Автор темы Некто
  • Дата начала

Некто

Guest
Создаем дерево каталога

Есть таблица в ней храняться данные след. типа:

| id | name | treeid |
1 aaa 0
2 bbb 0
3 aa 1
4 a 1
5 bb 2
6 !!! 3
7 !! 3

дерево должно построится след. вида

+aaa
+-aa
--!!!
--!!
-a
+bbb
+-bb


Т.е. в каждом разделе могут содержаться еще разделы. И их количество заранее неизвестно. Как это лучше сделать?
 

Некто

Guest
можно линк на почитать?

-~{}~ 04.08.05 12:02:

Нашел сам :+)
если кто еще такой же темный как я, то читаем здесь http://journalist.artotron.com/blitz.php?page=24

-~{}~ 04.08.05 12:22:

Поднимеем немного тему.

возьмем код с ссылки выше
PHP:
function tree($uid, $conn)
{

$sql = "SELECT * FROM
x_table WHERE parent_id=$uid";

$a = mysql_query($sql, $conn)

while($x = mysql_fetch_array($a))
{

.... какие-то действия...

tree($x["uid"],
$conn)

}

}

Но есть необходимость построить именно дерево, что бы был отступ у вложенных разделов. Как это лучше реализовать?
 

Sherman

Mephi
Ввести поле level, и делать отступы на основе этого поля. Оно вообще очень полезно в древодиных структурах, которые лежат в бд.
 

Некто

Guest
Немного не понял, можно поподробнее.
 

Некто

Guest
Сделал вот так:

PHP:
 $i='';
                for ($j=0; $j<=$treeid; $j++){
                $i=$i."&nbsp;&nbsp";}
 

Мутник

Новичок
function tree($uid, $conn)
{

$sql = "SELECT * FROM
x_table WHERE parent_id=$uid";

$a = mysql_query($sql, $conn)

while($x = mysql_fetch_array($a))
{

.... какие-то действия...

tree($x["uid"],
$conn)

}

}
тебе ж дали добрый совет - почитай про рекурсию.. все можно сделать одним запросом... А не 150 query к БД... быстрее гораздо будет работать при объемах выше 8-10 штук....
 
Сверху