Показать сообщение отдельно

  #660  
Старый 07.03.2009, 10:40
kraken
Участник форума
Регистрация: 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 сколько ступеней отображать
Может кому и пригодится
 
Ответить с цитированием