Денч
Новичок
Рекурсия. Непонятки с алгоритмом
Заранее извиняюсь, если не в ту тему.
Есть таблица БД:
! id ! id_parent !
--------------------
! 1 ! 0 !
! 2 ! 1 !
! 3 ! 1 !
! 4 ! 0 !
! 5 ! 1 !
! 6 ! 1 !
! 7 ! 1 !
! 8 ! 2 !
! 9 ! 2 !
! 10! 2 !
--------------------
смысл такой: В поле id_parent хранится id родителя. Вложенность неограниченная. На устройство таблиц не обращайте внимания, структура зависитне от меня.
Нужно отыскать все дочерние элементы, начиная от первой заданной при вызове функции.
Вот функция:
строка
пишет то, что нужно. А вот эта строка
отдает только первые дочерние элементы, не учитывая вложенность выше второго уровня, хотя вторая строка не сильно, на мой взгляд, отличается от первой.
Что нужно поменять в коде, чтобы функция заработала?
Уж извините, не очень силен в особенностях рекурсивных функций
Заранее извиняюсь, если не в ту тему.
Есть таблица БД:
! id ! id_parent !
--------------------
! 1 ! 0 !
! 2 ! 1 !
! 3 ! 1 !
! 4 ! 0 !
! 5 ! 1 !
! 6 ! 1 !
! 7 ! 1 !
! 8 ! 2 !
! 9 ! 2 !
! 10! 2 !
--------------------
смысл такой: В поле id_parent хранится id родителя. Вложенность неограниченная. На устройство таблиц не обращайте внимания, структура зависитне от меня.
Нужно отыскать все дочерние элементы, начиная от первой заданной при вызове функции.
Вот функция:
PHP:
function Get_tree($id)
{
$out="";
$query_parent="SELECT * FROM tree WHERE id_parent='".$id."'";
$res_parent=mysql_query($query_parent);
$num_parent=mysql_num_rows($res_parent);
if($num_parent==0)
{$out.= $id;}
else
{
while($data=mysql_fetch_array($res_parent))
{
$out.= $data['id'].",";
echo $data['id'].",";
get_tree($data['id']);
}
}
return "'(".$out.")'";
}
PHP:
echo $data['id'].",";
PHP:
$out.= $data['id'].",";
Что нужно поменять в коде, чтобы функция заработала?
Уж извините, не очень силен в особенностях рекурсивных функций
