用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与已存在的Java应用程序集成
Oct 09 PHP
十天学会php之第九天
Oct 09 PHP
桌面中心(四)数据显示
Oct 09 PHP
MySQL GBK→UTF-8编码转换
May 24 PHP
PHP DataGrid 实现代码
Aug 12 PHP
php Static关键字实用方法
Jun 04 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
php二维码生成
2015/10/19 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
JS 判断undefined的实现代码
2009/11/26 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
layui表格实现代码
2017/05/20 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python多线程http下载实现示例
2013/12/30 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Python csv模块使用方法代码实例
2019/08/29 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
TCP/IP的分层模型
2013/10/27 面试题
竞争上岗演讲稿
2014/01/05 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
食品安全演讲稿
2014/09/01 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
行政介绍信范文
2015/05/04 职场文书
花木兰观后感
2015/06/10 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python