|
|
|
| Я уже обращался с такой просьбой. Никак не могу разобраться с рекурсивной функцией, не понимаю как она работает. К примеру вот такой код:
<?php
include( "dbopen.php" );
function ShowTree($ParentID, $lvl) {
global $link;
global $lvl;
$lvl++;
$sSQL="SELECT id,title,pid FROM catalogue WHERE pid=".$ParentID." ORDER BY title";
$result=mysql_query($sSQL, $link);
if (mysql_num_rows($result) > 0) {
echo("<UL>\n");
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["id"];
echo("<LI>\n");
echo("<A HREF=\""."?ID=".$ID1."\">".$row["title"]."</A>"." \n");
ShowTree($ID1, $lvl);
$lvl--;
}
echo("</UL>\n");
}
}
ShowTree(0, 0);
mysql_close($link);
?>
|
Выдает такой результат:
1 уровень
---------2 уровень
---------2 уровень
1 уровень
---------2 уровень
---------3 уровень
---------2 уровень
|
А нужно, чтобы выдавал количество вторых уровней. Помогите пожалуйста. | |
|
|
|
|
|
|
|
для: saniamu
(22.06.2010 в 01:16)
| | а что значит "количество вторых уровней"?
а код проводит рекурсивный вызов функции ShowTree($ParentID, $lvl)
где, каждый очередной вызов включает цикл, где $ParentID
уже не тот, который первоначально в скрипте, а тот, который был выбран уже из базы
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["id"];
echo("<LI>\n");
echo("<A HREF=\""."?ID=".$ID1."\">".$row["title"]."</A>"." \n");
ShowTree($ID1, $lvl);
$lvl--;
}
|
| |
|
|
|
|
|
|
|
для: retsoul
(22.06.2010 в 05:24)
| | Мне нужно чтобы ответ был: "4", не совсем понял:
>
>а код проводит рекурсивный вызов функции ShowTree($ParentID, $lvl)
>где, каждый очередной вызов включает цикл, где $ParentID
>уже не тот, который первоначально в скрипте, а тот, который был выбран уже из базы
>
А что тут не правильно? | |
|
|
|
|
|
|
|
для: saniamu
(22.06.2010 в 01:16)
| | добавьте поле с номером уровня в таблицу. | |
|
|
|
|
|
|
|
для: Trianon
(22.06.2010 в 12:37)
| | так не пойдет, у каждого пользователя уровень будет разный. | |
|
|
|
|
|
|
|
для: saniamu
(22.06.2010 в 12:45)
| | конечно. поэтому и поле.
На каждой строке - свое число.
Или у Вас у каждого пользователя корень дерева - разный?
Даже в этом случае относительный уровень вычисляется как разность двух абсолютных. | |
|
|
|