一个更简单的无限级分类菜单代码


Posted in PHP onJanuary 16, 2007

首先要感谢terry39的指点,元旦闲来无事,我就把他所讲的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单SQL语句就能列出菜单,看看这个数据表怎么设计的:
数据库字段大概如下:
-----------------------------------------------------------------------------------
id              编号
fid             父分类编号
name         分类名
path          分类路径,以 id 为节点,组成类似    ,1,2,3,4, 这样的字符串
----------------------------------------------------------------------------------

可以假设有如下的数据

id      fid          name             path
----------------------------------------------------
1       0           分类1             ,1,
2       0           分类2             ,2,
3       1           分类1-1          ,1,3,
4       1           分类1-2          ,1,4,
5       2           分类2-1          ,2,5,
6       4           分类1-2-1       ,1,4,6,
----------------------------------------------------
这次偷懒,我只用一个页面,好在代码不长,全部代码用类封装的(不是必要,而是自己也想熟悉一下OO,呵呵!),来看看页面代码:

<?php /************************************** 
  页面:menu.php 
  作者:辉老大 
  功能:定义数据库操作及生成菜单列表类 
**************************************/ 
class menu{ 
       //创建构造函数,作用:数据库连接并选择相应数据库 
       public function __construct(){ 
           $dbhost     = "localhost"; 
           $dbuser     = "root"; 
           $dbpassword = "7529639"; 
           $dbname     = "menu"; 
           mysql_connect($dbhost,$dbuser,$dbpassword) or die("error!"); 
           mysql_query("SET NAMES 'GBK'"); 
           mysql_select_db($dbname); 
       } 
       //执行SQL语句函数 
       private function query($sql){ 
           return mysql_query($sql); 
       } 
       //取得结果集数组函数 
       private function loop_query($result){ 
           return mysql_fetch_array($result); 
       } 
       //列出菜单列表函数 
       public function menulist(){ 
           $sql="select * from list order by path"; 
           $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>'; 
            } 
       } 
       //创建析构函数,作用:关闭数据库连接 
       public function __destruct(){ 
           return mysql_close(); 
       } 
   } 
  $db=new menu();//生成实例 
  $db->menulist();//调用方法生成菜单 
?> 

一个更简单的无限级分类菜单代码
PHP 相关文章推荐
PHP学习之PHP变量
Oct 09 PHP
phpmyadmin的#1251问题
Nov 25 PHP
php中目录,文件操作详谈
Mar 19 PHP
mysql 全文搜索 技巧
Apr 27 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
解决中英文字符串长度问题函数
Jan 16 #PHP
在数据量大(超过10万)的情况下
Jan 15 #PHP
php防注
Jan 15 #PHP
PHP 的 __FILE__ 常量
Jan 15 #PHP
MySQL相关说明
Jan 15 #PHP
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 #PHP
关于mysql 字段的那个点为是定界符
Jan 15 #PHP
You might like
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
基于keras中的回调函数用法说明
2020/06/17 Python
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
上课迟到检讨书
2014/01/19 职场文书
利群广告词
2014/03/20 职场文书
师范生自我鉴定
2014/03/20 职场文书
防灾减灾标语
2014/10/07 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python