php如何实现树形菜单

发布时间:2024-12-26 点击:96
php实现树形菜单的方法:首先从数据库中获取数据,并放到一个数组中;然后把数据转化为一个树型状的数组;最后把这个树型状的数组转为html代码即可。
推荐:《php视频教程》
php实现无限级树型菜单(函数递归算法)
大概步骤如下:
首先到数据库取数据,放到一个数组,
然后把数据转化为一个树型状的数组,
最后把这个树型状的数组转为html代码。
也可以将第二步和第三步合为一步。
详细如下:
1。数据库设计:
脚本如下:
create table `bg_cate` (`cate_id` int(30) unsigned not null auto_increment,`cate_parentid` int(30) unsigned default '0',`cate_name` varchar(100) not null,`cate_intro` varchar(500) default null,`cate_order` int(30) unsigned default '0',`cate_icon` varchar(100) default null,primary key (`cate_id`)) engine=innodb default charset=utf8 auto_increment=34 ;-- -- 导出表中的数据 `bg_cate`--insert into `bg_cate` (`cate_id`, `cate_parentid`, `cate_name`, `cate_intro`, `cate_order`, `cate_icon`) values (4, 0, '往事如风', '记录往事', 0, 'icons/6.gif'),(5, 0, '水煮三国', '品位三国智慧', 0, 'icons/3.gif'),(2, 0, '技术学习', '平时学习的一些笔记,欢迎批评指正。', 0, 'icons/18.gif'),(3, 0, '生活点滴', '记录生活点滴', 0, 'icons/2.gif'),(6, 0, '栀子花开', '青春无限', 0, 'icons/8.gif'),(7, 0, '假日休闲', '悠闲、自在', 0, 'icons/24.gif'),(8, 2, 'html', 'html学习', 0, 'icons/1.gif'),(9, 2, 'css', 'css学习', 0, 'icons/1.gif'),(10, 2, 'php', 'php学习', 0, 'icons/18.gif'),(11, 10, 'php基础知识', 'php基础知识', 0, 'icons/1.gif'),(12, 10, 'oop', 'oop', 0, 'icons/1.gif'),(13, 10, 'php安全', '讲述php安全', 0, 'icons/1.gif'),(14, 10, 'seagull framework', 'seagull framework', 0, 'icons/1.gif'),(15, 2, 'javascript', 'javascript学习', 0, 'icons/1.gif'),(16, 2, '设计模式', null, 0, 'icons/1.gif'),(17, 2, '软件工程', '软件工程学习', 0, 'icons/1.gif'),(18, 3, '厦门生活', '厦门生活', 0, 'icons/8.gif'),(19, 3, '大学生活', '大学生活', 0, 'icons/8.gif'),(20, 3, '童年生活', '童年生活', 0, 'icons/15.gif'),(21, 19, '学习', '学习', 0, 'icons/1.gif'),(22, 19, '运动', '运动', 0, 'icons/16.gif'),(23, 19, '旅游', '旅游', 0, 'icons/24.gif'),(24, 22, '排球', '排球', 0, 'icons/9.gif'),(25, 22, '篮球', '篮球', 0, 'icons/9.gif'),(26, 22, '羽毛球', '羽毛球', 0, 'icons/9.gif'),(27, 22, '乒乓球', '乒乓球', 0, 'icons/9.gif');2。到数据库取数据,放到数组。
require_once './classes/mydb.php';$con = mydb::singleton(); $sql = <<<sql select * from bg_cate cate sql;$data = $con->getall($sql);//print_r($data);数据库操作我用的是pear类库。
最后的$data的数据格式如下:
array( [0] => array ( [cate_id] => 4 [cate_parentid] => 0 [cate_name] => 往事如风 [cate_intro] => 记录往事 [cate_order] => 0 [cate_icon] => icons/6.gif ) [1] => array ( [cate_id] => 5 [cate_parentid] => 0 [cate_name] => 水煮三国 [cate_intro] => 品位三国智慧 [cate_order] => 0 [cate_icon] => icons/3.gif )。。。。。。
3。把上一步的数据转为树型状的数组
代码如下:
function gettree($data, $pid){$tree = '';foreach($data as $k => $v){ if($v['cate_parentid'] == $pid) { //父亲找到儿子 $v['cate_parentid'] = gettree($data, $v['cate_id']); $tree[] = $v; //unset($data[$k]); }}return $tree;}$tree = gettree($data, 0);最后输出$tree的数据格式为:
array( [0] => array ( [cate_id] => 4 [cate_parentid] => [cate_name] => 往事如风 [cate_intro] => 记录往事 [cate_order] => 0 [cate_icon] => icons/6.gi

云服务器厂家租用多少钱一年啊
区别:TP5控制器中view和fetch方法
Chrome游戏:超级玛丽(Super Mario Bros. Crossover)、愤怒的小鸟(Angry Birds)
阿里云服务器怎么进入主目录
腾讯云国内服务器免备案吗
美国云服务器网站怎么修改源码
此服务器昨天折腾一天不能访问
申请的阿里云服务器怎么使用方法