
07.03.2009, 10:40
|
|
Участник форума
Регистрация: 02.01.2009
Сообщений: 104
Провел на форуме: 750298
Репутация:
297
|
|
писал партнерку с многоуровневой реф программой столкнулся с выводом дерева.
Вид бд
Код:
......| id | login | st0 | st1 | st2 | .....| st {$maxlv}
st0-st {$maxlv} растояние он 0 - $maxlv вершины дерева
Проблему решил рекурсией.
PHP код:
function show_tree($id,$n)
{
if ($n>$this->bd_step) return 0;
$ret="<table border=1>";
$res=bd_sql_result("SELECT id,login FROM ".$this->bd_perfix."_users WHERE id=".$id);
$name=mysql_result($res,0,1);
$res=bd_sql_result("SELECT sid,slogin FROM ".$this->bd_perfix."_users WHERE st0=".$id);
$rows=mysql_num_rows($res);
$ret.="
<tr>
<td COLSPAN=".$rows.">
<center>$name</center>
</td>
</tr>
<tr>";
for ($i=0;$i<$rows;$i++)
{
$ret.= "<td>".$this->show_tree(mysql_result($res,$i,0),$n+1)."</td>";
}
$ret.= "</tr></table>";
return $ret;
}
Вызывается show_tree($id,$n)
$id относительно кого строить дерево
bd_step сколько ступеней отображать
Может кому и пригодится
|
|
|