递归的函数如下$db2,$db3 分别是已经定义了的mysql类<?
/** 递归显示子节点函数

*
* @param $SearchPattern    查找的条件(like)
* @param $BaseNum 节点的层数
*/
function ListChildTree($SearchPattern,$BaseNum)
{
  global $db2,$db3,$class_t;//声明连接数据库的句柄为全局
   $Sql="select name,class_id from $class_t where class_id like '$SearchPattern'";//查找孩子节点
   $db2->query($Sql);
   while($db2->next_record()) { //取出孩子节点
     $Space="";
     for($j=0;$j<((strlen($SearchPattern)/3)-$BaseNum);$j++)
        $Space.="&nbsp;"; //设置显示节点前面的距离,这里的空格的html被这里自动替换成""了
   $ChildClass=trim($db2->f('class_id'))."___"; //生成mysql的查询条件
   $ChildSql="select count(*) as total from $class_t where class_id like '$ChildClass'";//查找孩子节点的孩子节点
   $db3->query($ChildSql);
   $db3->next_record();
   $TableId="ta".trim($db2->f('class_id')); //设置表格Id
   $TablePic="ta".trim($db2->f('class_id'))."pic";//设置图片Id 
   //生成是否删除的链接,每次循环清空
   $strdel="";
   if($db3->f('total')<1){//如果没有找到孩子节点的节点,则显示"O"图片
  ?>
  <tr><td>
  <?=$Space?><span align="absmiddle"><img src="images/leaf.gif" border="0" align="absmiddle" ></span>&nbsp;<a href="javascript:void(0);" onclick="javascript:change_form('<?=$db2->f('class_id')?>','<?=$db2->f('name')?>');" class="clink03"><?=$db2->f('name')?></a>
<?
//生成删除的链接
$strdel="<a href='?whatdo=delete&class_id=".$db2->f('class_id')."' onclick='javascript:if(!confirm(\"该类别下的商品也会被删除\\n  你真的要删除该类别吗?\")) return false;' class='clink03'><B>×</B></a>";
?>
  <table id="<?=$TableId?>" style="display=none" cellspacing="0" cellpadding="0" width="100%">
  
 <?}else{ //找到则显示"+"图片
  ?>
   <tr><td>
   <?=$Space?><a onclick="javascript:expands('<?=$TableId?>','<?=$TablePic?>')" style="cursor:hand"><span align="absmiddle"><img id="<?=$TablePic?>" src="images/close.gif" border="0" align="absmiddle"></span></a>&nbsp;<a href="javascript:void(0);" onclick="javascript:change_form('<?=$db2->f('class_id')?>','<?=$db2->f('name')?>');" class="clink03"><?=$db2->f('name')?></a>
  <table id="<?=$TableId?>" style="display=''" cellspacing="0" cellpadding="0" border='0' width="100%">
  <?
  ListChildTree($ChildClass,$BaseNum);//递归调用函数本身来显示其他孩子节点
  }//end if?>
   </table>   
 <td width="30" align="center"><?=$strdel?>               
  <?}//end while
}//end function?>