用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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
php抽奖小程序的实现代码
Jun 18 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
php获取一个变量的名字的方法
Sep 05 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
PHP goto语句用法实例
Aug 06 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文件操作详解
2016/12/30 PHP
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
python中的错误处理
2016/04/10 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python socket聊天脚本代码实例
2020/01/02 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python列表推导式实现代码实例
2020/09/09 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
《晚上的太阳》教学反思
2014/04/23 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
推荐信怎么写
2014/05/09 职场文书
小时代观后感
2015/06/10 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技