一个更简单的无限级分类菜单代码
一个更简单的无限级分类菜单代码
发布时间:2017-01-07 来源:查字典编辑
摘要:首先要感谢terry39的指点,元旦闲来无事,我就把他所讲的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单...

首先要感谢terry39的指点,元旦闲来无事,我就把他所讲的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单SQL语句就能列出菜单,看看这个数据表怎么设计的:

数据库字段大概如下:

-----------------------------------------------------------------------------------

id编号

fid父分类编号

name分类名

path分类路径,以id为节点,组成类似,1,2,3,4,这样的字符串

----------------------------------------------------------------------------------

可以假设有如下的数据

idfidnamepath

----------------------------------------------------

10分类1,1,

20分类2,2,

31分类1-1,1,3,

41分类1-2,1,4,

52分类2-1,2,5,

64分类1-2-1,1,4,6,

----------------------------------------------------

这次偷懒,我只用一个页面,好在代码不长,全部代码用类封装的(不是必要,而是自己也想熟悉一下OO,呵呵!),来看看页面代码:

复制代码 代码如下:

<?php

/**************************************

页面:menu.php

作者:辉老大

功能:定义数据库操作及生成菜单列表类

**************************************/

classmenu{

//创建构造函数,作用:数据库连接并选择相应数据库

publicfunction__construct(){

$dbhost="localhost";

$dbuser="root";

$dbpassword="7529639";

$dbname="menu";

mysql_connect($dbhost,$dbuser,$dbpassword)ordie("error!");

mysql_query("SETNAMES'GBK'");

mysql_select_db($dbname);

}

//执行SQL语句函数

privatefunctionquery($sql){

returnmysql_query($sql);

}

//取得结果集数组函数

privatefunctionloop_query($result){

returnmysql_fetch_array($result);

}

//列出菜单列表函数

publicfunctionmenulist(){

$sql="select*fromlistorderbypath";

$result=$this->query($sql);

while($rows=$this->loop_query($result)){

if(substr_count($rows['path'],',')>2){

for($i=0;$i<(substr_count($rows['path'],',')-2);$i++)

echo'';

}

echo$rows['name'].'<br>';

}

}

//创建析构函数,作用:关闭数据库连接

publicfunction__destruct(){

returnmysql_close();

}

}

$db=newmenu();//生成实例

$db->menulist();//调用方法生成菜单

?>

1

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类