递归的函数如下$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.=" "; //设置显示节点前面的距离,这里的空格的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> <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> <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?>
/** 递归显示子节点函数
*
*
* @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.=" "; //设置显示节点前面的距离,这里的空格的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> <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> <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?>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货