用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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
zend framework多模块多布局配置
Feb 26 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
php验证码生成器
May 24 PHP
php插件Xajax使用方法详解
Aug 31 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
COM in PHP (winows only)
2006/10/09 PHP
PHP小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
PHP防CC攻击实现代码
2011/12/29 PHP
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
常用python数据类型转换函数总结
2014/03/11 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python程序封装为win32服务的方法
2021/03/07 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
美国五金商店:Ace Hardware
2018/03/27 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
金融专业个人的自我评价
2013/10/18 职场文书
计算机学生求职信范文
2014/01/30 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
教师节活动总结
2014/08/29 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
高中学生自我评价范文
2014/09/23 职场文书
求职自我评价范文100字
2014/09/23 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书