Вывод дерева с подсчетом кол-ва разделов, находящихся внутри каждого текущего раздела

vladax

Новичок
Вывод дерева с подсчетом кол-ва разделов, находящихся внутри каждого текущего раздела

Дерево в мускуле... основано на простых парентах (cat_id, parent_id, cat_name).

Ребят, помогите вывести всё дерево, но только с подсчетом кол-ва разделов, находящихся в каждом текущем разделе.

PHP:
//функция выстраивает ВСЁ дерево каталога, но
//как осуществить тут подсчет?
function get_tree($parent_id="0", $prefix="") {
   global $out;
   
   $query = "SELECT * FROM menu WHERE parent_id = '$parent_id' ORDER BY cat_name";
   $result = mysql_query($query);
   while ($row = mysql_fetch_array($result)) {
       $out .= $prefix.">&nbsp;<a href=\"".$PHP_SELF."?parent_id=".$row['cat_id']."\">".$row['cat_name']."</a><br>";
       get_tree($row['cat_id'], $prefix."&nbsp;&nbsp;");
   }
   return $out;
}
Столько провозился, но не вышло у меня ничего. Реально ли это сделать? Каталожек маленький, поэтому (с использованием данного, согласен, не очень прямого способа, в отличае от Nested Sets) тормозить должно не сильно.
 

lovchy

nacido para cifrar
При каждом проходе цикла инкрементируй глобальную переменную $$parent_id. Или я что-то недопонял?
 

lovchy

nacido para cifrar
Я уже показал как... $GLOBALS['c'.$parent_id]++; Потом подставляй по паренту к веткам количество подразделов. Соответственно в ветке с id = 1 будет $GLOBALS['c1'] подветок.
 

vladax

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

Profic

just Profic (PHP5 BetaTeam)
или запросом, например таким
[SQL]
SELECT a.id, a.item AS item, COUNT(b.id) AS childs
FROM tree AS a
LEFT JOIN tree AS b
ON a.id = b.parentid
WHERE a.parentid = '$id'
GROUP BY a.id
ORDER BY item;
[/SQL]
 

Profic

just Profic (PHP5 BetaTeam)
в общем идет самообъединение таблицы самой с собой.
если ты посмотришь ответ на этот запрос, например в phpmyadmin, но с SELECT *, то поймешь смысл :)

Зы. Вычитал в какой-то статье по деревьям... :)
 
Сверху