用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 广告调用类代码(支持Flash调用)
Aug 11 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
基于php下载文件的详解
Jun 02 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
解析MySql与Java的时间类型
Jun 22 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
php验证手机号码
Nov 11 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
Laravel 连接(Join)示例
Oct 16 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支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
php取得字符串首字母的方法
2015/03/25 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
php面向对象重点知识分享
2019/09/27 PHP
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
python类和继承用法实例
2015/07/07 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
《自然之道》教学反思
2014/02/11 职场文书
初三学习计划书范文
2014/04/30 职场文书
幼儿园运动会口号
2014/06/07 职场文书
学前教育专业求职信
2014/09/02 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
档案工作个人总结
2015/03/03 职场文书
社区党务工作总结2015
2015/05/19 职场文书
python playwrigh框架入门安装使用
2022/07/23 Python
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL