用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中防止SQL注入实现代码
Feb 19 PHP
php多任务程序实例解析
Jul 19 PHP
php文件读取方法实例分析
Jun 20 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 PHP
PHP内存溢出优化代码详解
Feb 26 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
PHP daddslashes 使用方法介绍
2012/10/26 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
vue动态设置img的src路径实例
2018/09/18 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python多线程扫描端口示例
2014/01/16 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
产品质量承诺书
2014/03/27 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
南湾猴岛导游词
2015/02/09 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书