广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    一个更简单的无限级分类菜单代码

    2018-10-28 11:06:39 次阅读 稿源:互联网
    零七广告

    首先要感谢terry39的指点,元旦闲来无事,我就把他所讲的原理简单实现一下,这个程序的关键就在于数据表的设计很有特色,不用递归,依靠个简单SQL语句就能列出菜单,看看这个数据表怎么设计的:
    数据库字段大概如下:
    -----------------------------------------------------------------------------------
    id              编号
    fid             父分类编号
    name         分类名
    path          分类路径,以 id 为节点,组成类似    ,1,2,3,4, 这样的字符串
    ----------------------------------------------------------------------------------

    可以假设有如下的数据

    id      fid          name             path
    ----------------------------------------------------
    1       0           分类1             ,1,
    2       0           分类2             ,2,
    3       1           分类1-1          ,1,3,
    4       1           分类1-2          ,1,4,
    5       2           分类2-1          ,2,5,
    6       4           分类1-2-1       ,1,4,6,
    ----------------------------------------------------
    这次偷懒,我只用一个页面,好在代码不长,全部代码用类封装的(不是必要,而是自己也想熟悉一下OO,呵呵!),来看看页面代码:
    代码如下:

    <?php

    /**************************************

      页面:menu.php
      作者:辉老大
      功能:定义数据库操作及生成菜单列表类

    **************************************/
    class menu{

           //创建构造函数,作用:数据库连接并选择相应数据库
           public function __construct(){
               $dbhost     = "localhost";
               $dbuser     = "root";
               $dbpassword = "7529639";
               $dbname     = "menu";
               mysql_connect($dbhost,$dbuser,$dbpassword) or die("error!");
               mysql_query("SET NAMES 'GBK'");
               mysql_select_db($dbname);
           }

           //执行SQL语句函数
           private function query($sql){
               return mysql_query($sql);
           }

           //取得结果集数组函数
           private function loop_query($result){
               return mysql_fetch_array($result);
           }
           //列出菜单列表函数
           public function menulist(){
               $sql="select * from list order by path";
               $result=$this->query($sql);
                while($rows=$this->loop_query($result)){
                 if(substr_count($rows['path'],',')>2){
                   for($i=0;$i<(substr_count($rows['path'],',')-2);$i++)
                   echo ' ';
                  }
                 echo $rows['name'].'<br>';
                }
           }

           //创建析构函数,作用:关闭数据库连接
           public function __destruct(){
               return mysql_close();
           }
       }
      $db=new menu();//生成实例
      $db->menulist();//调用方法生成菜单
    ?> 

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告