用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 相关文章推荐
php2html php生成静态页函数
Dec 08 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
php入门学习知识点六 PHP文件的读写操作代码
Jul 14 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
浅谈php调用python文件
Mar 29 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 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 self与$this的详解
2013/06/08 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
php查询及多条件查询
2017/02/26 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
Python之文字转图片方法
2018/05/10 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
python异常触发及自定义异常类解析
2019/08/06 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python读取csv文件实例解析
2019/12/30 Python
python列表返回重复数据的下标
2020/02/10 Python
python 元组的使用方法
2020/06/09 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
毕业生自我鉴定范文
2013/11/08 职场文书
渡河少年教学反思
2014/02/12 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL