用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设计模式 Prototype (原型模式)代码
Jun 26 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
php实现事件监听与触发的方法
Nov 21 PHP
Yii入门教程之Yii安装及hello world
Nov 25 PHP
php截取中文字符串函数实例
Feb 23 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
php socket通信简单实现
Nov 18 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
PHP 中魔术常量的实例详解
Oct 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php实现微信支付之企业付款
2018/05/30 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
js时间日期和毫秒的相互转换
2013/02/22 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
django批量导入xml数据
2016/10/16 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
python Tkinter的图片刷新实例
2019/06/14 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Python爬虫教程知识点总结
2020/10/19 Python
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
阳光体育活动总结
2014/04/30 职场文书
公司募捐倡议书
2014/05/14 职场文书
2014年财政所工作总结
2014/11/22 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
行政经理岗位职责
2015/04/15 职场文书
清明扫墓感想
2015/08/11 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
工作一年自我鉴定
2019/06/20 职场文书
Python基础之条件语句详解
2021/06/16 Python
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript