欢迎来到福编程网,本站提供各种互联网专业知识!

无限级别菜单的实现

发布时间:2006-10-09 作者: 来源:转载

明天(已经是今天了,呵呵)我会提供一个测试页面让大家来看(因为我在宿舍只能拨号上网,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){//如果没有找到孩子节点的节点,则显示"-"图片

?>

?>

ListChildTree($ChildDepartment,$BaseNum);//递归调用函数本身来显示其他孩子节点

}//end if?>

}//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);

?>

$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我)

*/

?>

相关推荐