`
zendj
  • 浏览: 115709 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

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

首先要感谢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
作者:辉老大
功能:定义数据库操作及生成菜单列表类

**************************************/
classmenu{

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

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

//取得结果集数组函数
privatefunctionloop_query($result){
return
mysql_fetch_array($result);
}
//列出菜单列表函数
publicfunctionmenulist(){
$sql="select*fromlistorderbypath";
$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>';
}
}

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

分享到:
评论

相关推荐

    ASP无限级分类代码 提供无限级分类的完整演示,带数据库

    程序名称:ASP无限级分类代码 程序说明:提供无限级分类的完整演示,带数据库。

    php无限级分类菜单类.zip

    在做PHP程序时,经常会遇到设计多级菜单的编程,其实在许多的开源后台都是无限级的分类,而这些分类的数据仅仅只保存到了一个数据表里,只是用源代码进行了关联而已。而这些关联的数据并不复杂,其实一个优秀的后台...

    AjaxPro无限级分类联动

    使用AjaxPro及Javascript技术实现的无限级不刷新级联菜单。 内含无限级分类数据库代码。

    一个基于Vue2后台管理系统demo无限级菜单下拉树形选择框

    一个基于Vue2、element ui、vue-cli、vuex、vue-router、axios 、echarts后台管理系统demo. 无限级菜单,下拉树形选择框

    js无限级分类递归

    当然该方法是支持无限级父子关系。修改之前的源码均来自网上,本人只是对当前做了整合和修改。当前你所有的记录中需要包含id和parentId,也就是有父子关系即可。你的数据源必须是一维的json数组。zNodes=[ {id:1,...

    无限级联动下拉菜单 V1.03

    强大的无限级联动下拉菜单类为您建站提供相当的便利条件,特点如下: 一、代码简练,通俗易懂,严格测试。 二、多级别,多数量联动,不局限于2级或3级联动。 三、一拖多,一个改变,多个跟着改变。 四、本程序在...

    原生JS无限级树形菜单(兼容各浏览器)

    原生JS写的无限级树形菜单(包含文件:otree.js,otree.css,demo.html,demo1.html,imgs/ ),兼容IE6/7/8/9+、Chrome... 可获取HTML中li列表自动生成树菜单(可用作网站多级分类目录) 更多功能参见demo.html和demo1.html

    JS无限级菜单

    使用js编写的一个菜单,js代码与html没有分开,阅读时可能稍有困难,需要了解json,但使用很方便 var xx = new PopMenu('x'); PopMenu.DataTextField = "ThemeName";//绑定项目文本 PopMenu....

    CSS js抽右展开的无限级菜单.rar

    CSS js抽右展开的无限级菜单,相信这款CSS和JavaScript共同实现的折叠展开式菜单会满足你的需求,因为它可以增加无限级子菜单,有多少分类都可以加进去,即使我们用不了那么多分类,不过学习研究下制作思路也是值得...

    php+mysql无限级分类用js联级select控制

    在做cms的时候,涉及到无限级分类,比如,添加信息的时候需要选择目录, 这时候,就要做类似于省市联级菜单的效果去给用户选择 ,代码不是特别漂亮,但是简洁,很方便使用 ~ 主要实现方法是 ajax ID去请求子目录, ...

    laravel 框架实现无限级分类的方法示例

    本文实例讲述了laravel 框架实现无限级分类的方法。分享给大家供大家参考,具体如下: 模型中的代码 namespace App\models\wxj; use Illuminate\Support\Facades\DB; use Session; class Wxjlx { public function ...

    JS 4级展开菜单代码.rar

    JS 4级展开菜单代码,本演示代码中的菜单就可以展开4级的子菜单,相信4级可满足大部分网站的需求了...其实本菜单还可支持更多级,简单就是一个无限级的菜单,只要你有那么多分类,就可通过演示中的方法一直添加子菜单。

    Ajax 四级导航菜单ASP+Access动态版

    Ajax四级导航菜单ASP+Access动态版,单就形式来说,绝对值得你一看,因为菜单运行Ajax技术,并结合数据库中的菜单分类 ,依次读出对应级的菜单,实用性更广泛。这个菜单带给大家的是思路上的开拓,虽然美化的一般,...

    ajax+asp无限级分类树型结构的代码

    ajax+asp无限级分类树型结构的代码

    JS实现无限级网页折叠菜单(类似树形菜单)效果代码

    本文实例讲述了JS实现无限级网页折叠菜单(类似树形菜单)效果代码。分享给大家供大家参考。具体如下: 这是一款超不错的网页折叠菜单,采用JavaScript实现。折叠菜单是大家比较常见到的一种菜单形式,可广泛应用于...

    TreeView无限级分类树ASP.NET版

    +Access实现TreeView无限级分类,也就是大家常见到的树形菜单,通过自带的分类管理程序,你将可以轻松添点节点、删除节点,压缩包中含有技术文档,对于想改进和想学习本无限级分类菜单的朋友来说,是个福音。...

    jQuery无限极侧边下拉菜单代码

    jQuery无限极侧边下拉菜单代码是一款利用json导入分类菜单数据,适用于后台框架的侧边导航菜单效果代码。

Global site tag (gtag.js) - Google Analytics