Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчет колличества элементов
 
 автор: saniamu   (22.06.2010 в 01:16)   письмо автору
 
 

Я уже обращался с такой просьбой. Никак не могу разобраться с рекурсивной функцией, не понимаю как она работает. К примеру вот такой код:
<?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(00); 

mysql_close($link); 

?> 


Выдает такой результат:

           1 уровень
                ---------2 уровень
                ---------2 уровень
           1 уровень
                ---------2 уровень
                                 ---------3 уровень
                ---------2 уровень


А нужно, чтобы выдавал количество вторых уровней. Помогите пожалуйста.

  Ответить  
 
 автор: retsoul   (22.06.2010 в 05:24)   письмо автору
 
   для: 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--;

  Ответить  
 
 автор: saniamu   (22.06.2010 в 07:44)   письмо автору
 
   для: retsoul   (22.06.2010 в 05:24)
 

Мне нужно чтобы ответ был: "4", не совсем понял:
>
>а код проводит рекурсивный вызов функции ShowTree($ParentID, $lvl)
>где, каждый очередной вызов включает цикл, где $ParentID
>уже не тот, который первоначально в скрипте, а тот, который был выбран уже из базы
>
А что тут не правильно?

  Ответить  
 
 автор: Trianon   (22.06.2010 в 12:37)   письмо автору
 
   для: saniamu   (22.06.2010 в 01:16)
 

добавьте поле с номером уровня в таблицу.

  Ответить  
 
 автор: saniamu   (22.06.2010 в 12:45)   письмо автору
 
   для: Trianon   (22.06.2010 в 12:37)
 

так не пойдет, у каждого пользователя уровень будет разный.

  Ответить  
 
 автор: Trianon   (22.06.2010 в 12:47)   письмо автору
 
   для: saniamu   (22.06.2010 в 12:45)
 

конечно. поэтому и поле.
На каждой строке - свое число.

Или у Вас у каждого пользователя корень дерева - разный?
Даже в этом случае относительный уровень вычисляется как разность двух абсолютных.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования