Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18931620
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-04-12 20:49:42

明天(已经是今天了,呵呵)我会提供一个测试页面让大家来看(因为我在宿舍只能拨号上网,Ip地址不固定)

*/

/** 递归显示子节点函数
*
*
* @param $SearchPattern    查找的条件(like)
* @param $BaseNum 节点的层数
*/

           function ListChildTree($SearchPattern,$BaseNum){
               global $Tree;//声明连接数据库的句柄为全局
               $Sql="select DepartmentId,DepartmentName from test where DepartmentId like '$SearchPattern'";    //查找孩子节点
               $QueryChild=$Tree->query($Sql);         
               while($Result=$Tree->fetch_array($QueryChild)) { //取出孩子节点
                   $Space="";
                    for($j=0;$j<((strlen($SearchPattern)/3)-$BaseNum);$j++)
                      $Space.="  ";                 //设置显示节点前面的距离,这里的空格的html被这里自动替换成"  "了
                   $ChildDepartment=trim($Result[0])."___";           
                   $ChildSql="select count(*) from test where DepartmentId like '$ChildDepartment'";//查找孩子节点的孩子节点
                   $ChildResult=$Tree->query_first($ChildSql);            
                   $TableId="ta".trim($Result[0]); //设置表格Id
                   $TablePic="ta".trim($Result[0])."pic";    //设置图片Id                  
                   if($ChildResult[0]<1){//如果没有找到孩子节点的节点,则显示"-"图片
                      ?>
                    =$Space?>=$Result[1]?>
                   


               
                                   ?>
                  
=$Space?>=$Result[1]?>
                 
                          ListChildTree($ChildDepartment,$BaseNum);//递归调用函数本身来显示其他孩子节点
            }//end if?>
            

            }//end while
           }//end function?>


无限级菜单测试




  require("do_mySql.php");
$Tree = new DB_Sql;
$Tree->connect();//连接数据库,可根据需要换成自己的代码
 
  $Sql="select DepartmentId,DepartmentName from test where length(DepartmentId)=3";//提出最上层节点(祖宗节点),根据需要自己修改
  $Result=$Tree->query_first($Sql);
?>

                        
 
                        
                          
                            
     
    
   
                    
       
        
                  
                    
             
        
       
=$Result[1]?>                                                                                     
       
                        $FirstDepartment=$Result[0];
               $BaseNum=strlen($FirstDepartment)/3;//计算层数,其实这个有点多余,因为其必为第一层
               $SearchPattern=$FirstDepartment."___";    //设置查找条件      
               ListChildTree($SearchPattern,$BaseNum);        //显示祖宗节点的孩子节点
         ?>
       

       

      

     

      

  



 
由于是测试表设计得非常的简单:
 
CREATE TABLE test (
  id mediumint(8) unsigned NOT NULL auto_increment, #流水号
  DepartmentId varchar(100) NOT NULL default '',    #单位代号
  DepartmentName varchar(100) NOT NULL default '',  #单位名称
  KEY id (id)  
)
 
数据插入的代码我在这里就不那出来给大家了(很容易写,相信大家都能写出来)
 
数据表的规则为:
 
001为第一级(如果999个不够,请自行添加)
001001为001的第一个子节点,001002为001的第二个子节点
001001001为001001的第一个子节点,以此类推……
 
我这里只设置了一个"祖宗"(001),所以在程序中就直接调用了,可根据需要自己来设置,并对代码作简单的修改即可!
 
好了,就到这里了,如果大家有问题欢迎和我探讨!最好祝大家今天工作愉快!
先吸颗烟在睡觉!好累!(因为刚刚写了一个webFtp,如果哪位兄弟姐妹需要请mail我)
*/
 
 
?>

阅读(333) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~