用PHP实现多级树型菜单


Posted in PHP onOctober 09, 2006

<?   
  //树型目录结构模板程序   
  //菜单目录库字段说明:   
  //menu_id 菜单项目 id   
  //menu 菜单名称   
  //menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........   
  //menu_superior 上一级菜单 id 号   

  function my_menu($menu_content,$i,$menu_grade_temp,$menu_superior_temp)   
  {   
    global $PHP_SELF;   
    $temp1=$menu_grade_temp+1;   
    $menu_superior_temp_array=split("/",$menu_superior_temp);   
    for ($t=0;$t<$i;$t++)   
    {   
      $menu_array=split("/",$menu_content[$t]);   
      If(($menu_array[2]==$menu_grade_temp)&&($menu_array[3]==$menu_superior_temp_array[$menu_grade_temp-1]))   
      {   
        for($p=1;$p<=$menu_grade_temp;$p++){echo "  ";}   
        $temp3=$menu_superior_temp_array;   
        $temp3[$menu_grade_temp]=$menu_array[0];   
        $temp2=implode("/",$temp3);   
        if ($menu_array[0]==$menu_superior_temp_array[$temp1-1])   
        {   
          $temp5=$temp1-1;   
          $temp3[$menu_grade_temp]="";   
          $temp6=implode("/",$temp3);   
          echo "<a href="$PHP_SELF?menu_grade_temp=".$temp5."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";   
          my_menu($menu_content,$i,$temp1,$temp2);   
        }   
        else   
        {   
          $temp3[$menu_grade_temp+1]="";   
          $temp6=implode("/",$temp3);   
          echo "<a href="$PHP_SELF?menu_grade_temp=".$temp1."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";   
        }   
      }   
    }   
  }   
  // 连接 MySql 数据库   
  $db_host="localhost";   
  $db_user="dkj";   
  $db_password="123";   
  $db_name="test";   
  mysql_connect($db_host,$db_user,$db_password);   
  mysql_select_db($db_name);   

  //从数据库中取得数据   
  $query_string="select * from menu order by menu_grade";   
  $db_data=mysql_query($query_string);   

  //第一次执行初始化   
  if ($menu_grade_temp=="")   
  {   
    $menu_superior_temp=0;   
  }   

  //将所有的信息读入数组,并统计数组个数   
  $i=0;   
  while (list($menu_id,$menu,$menu_grade,$menu_superior)=mysql_fetch_row($db_data))   
  {   
    $menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;   
    $i++;   
  }   
  my_menu($menu_content,$i,1,$menu_superior_temp);   

  /* 附数据库结构及模拟数据   
  # phpMyAdmin MySQL-Dump   
  #   
  # 主机: localhost 数据库 : test   
  # --------------------------------------------------------   

  #   
  # 数据表的结构 'menu'   
  #   

  CREATE TABLE menu (   
  menu_id int(11) NOT NULL auto_increment,   
  menu varchar(20) NOT NULL,   
  menu_grade int(11) NOT NULL,   
  menu_superior int(11) NOT NULL,   
  UNIQUE menu_id (menu_id)   
  );   

  #   
  # 导出下面的数据库内容 'menu'   
  #   

  INSERT INTO menu VALUES( '1', '计算机', '1', '0');   
  INSERT INTO menu VALUES( '2', '编程', '2', '1');   
  INSERT INTO menu VALUES( '3', '网络', '2', '1');   
  INSERT INTO menu VALUES( '4', 'PHP与MySql', '3', '2');   
  INSERT INTO menu VALUES( '5', 'C语言', '3', '2');   
  INSERT INTO menu VALUES( '6', '网页制作', '3', '3');   
  INSERT INTO menu VALUES( '7', 'TCP、IP协议', '3', '3');   
  INSERT INTO menu VALUES( '8', '数学', '1', '0');   
  INSERT INTO menu VALUES( '9', '高等数学', '2', '8');   
  INSERT INTO menu VALUES( '10', '线性代数', '3', '9');   
  INSERT INTO menu VALUES( '11', '离散数学', '3', '9');   
  INSERT INTO menu VALUES( '12', '初等数学', '2', '8');   
  INSERT INTO menu VALUES( '13', '文学', '1', '0');   
  INSERT INTO menu VALUES( '14', '中国文学', '2', '13');   
  INSERT INTO menu VALUES( '15', 'php', '4', '4');   
  INSERT INTO menu VALUES( '16', 'mysql', '4', '4');   
*/   
?>  

PHP 相关文章推荐
自定义PHP分页函数
Oct 09 PHP
PHP中文件上传的一个问题
Sep 04 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
php设计模式之命令模式的应用详解
May 21 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
PHP文件上传操作实例详解
Sep 27 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 PHP
PHP4在Windows2000下的安装
Oct 09 #PHP
模仿OSO的论坛(五)
Oct 09 #PHP
基于mysql的论坛(2)
Oct 09 #PHP
基于mysql的论坛(1)
Oct 09 #PHP
基于mysql的论坛(4)
Oct 09 #PHP
基于mysql的论坛(5)
Oct 09 #PHP
基于mysql的论坛(6)
Oct 09 #PHP
You might like
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
运动会广播稿20字
2014/02/18 职场文书
小区文明倡议书
2014/05/16 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
简历中自我评价范文
2015/03/11 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers
MySQL Shell的介绍以及安装
2021/04/24 MySQL
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技