PHP无限级分类方法及代码

无论你要构建自己的论坛,在你的网站上发布消息还是书写自己的CMS程序,你都会遇到要在数据库中存储层次数据的情况。同时,除非你使用一种像XML的数据库,否则关系数据库中的表都不是层次结构的,他们只是一个平坦的列表。所以你必须找到一种把层次数据库转化的方法。

存储树形结构是一个很常见的问题,他有好几种解决方案。主要有两种方法:邻接列表模型和改进前序遍历树算法

在本文中,我们将探讨这两种保存层次数据的方法。我将举一个在线食品店树形图的例子。这个食品店通过类别、颜色和品种来组织食品。树形图如下:

本文包含了一些代码的例子来演示如何保存和获取数据。我选择PHP来写例子,因为我常用这个语言,而且很多人也都使用或者知道这个语言。你可以很方便地把它们翻译成你自己用的语言。

邻接列表模型(The Adjacency List Model)

我们要尝试的第一个——也是最优美的——方法称为“邻接列表模型”或称为“递归方法”。它是一个很优雅的方法因为你只需要一个简单的方法来在你的树中进行迭代。在我们的食品店中,邻接列表的表格如下:

如你所见,对每个节点保存一个“父”节点。我们可以看到“Pear”是“Green”的一个子节点,而后者又是“Fruit”的子节点,如此类推。 根节点,“Food”,则他的父节点没有值。为了简单,我只用了“title”值来标识每个节点。当然,在实际的数据库中,你要使用数字的ID。

时间: 2024-09-12 08:04:34

PHP无限级分类方法及代码的相关文章

解析PHP无限级分类方法及代码_php技巧

无论你要构建自己的论坛,在你的网站上发布消息还是书写自己的CMS程序,你都会遇到要在数据库中存储层次数据的情况.同时,除非你使用一种像XML的数据库,否则关系数据库中的表都不是层次结构的,他们只是一个平坦的列表.所以你必须找到一种把层次数据库转化的方法. 存储树形结构是一个很常见的问题,他有好几种解决方案.主要有两种方法:邻接列表模型和改进前序遍历树算法 在本文中,我们将探讨这两种保存层次数据的方法.我将举一个在线食品店树形图的例子.这个食品店通过类别.颜色和品种来组织食品.树形图如下: 本文包

C#无限栏目分级程序代码分享 好东西第1/3页_C#教程

数据库表的结构必须有以下字段:  screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>各个字段的说明:screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; th

asp中"无限流"分页程序代码_应用技巧

<% '****************************************************************** '** 本程序名:"无限流"分页程序 '** 作者:Arbiter(AAsx) '** 版本:Million Level '** '** QQ:22222xx '** Email:Arbiter@21cn.com '** http://www.imagecity.org/ '*********************************

纯jsp打造无限层次的树代码_JSP编程

做树并不复杂,但我们通常做的是2层或3层,那样的数据一般来自多个表,比如:部门,员工 然而这种自连接的表,其没有确定的层次,可能是无限多级 比如:a是b的上级,b是c的上级,c是d的上级... 每个上级有几个下级,下级的层次,都是动态的 解决这个问题,其实主要用到js的知识 可以使用div的innerHTML属性 当然也可以用table,用append的方法 下面就用div的innerHTML属性来实现 主要思路是通过super,在document中查找id与自身super关联的div,这个di

基于jQuery的公告无限循环滚动实现代码_jquery

在线演示:http://demo.jb51.net/js/2012/callboard/jQuery代码 复制代码 代码如下: //第二版:Newton改造 (function (win){ var callboarTimer; var callboard = $('#callboard'); var callboardUl = callboard.find('ul'); var callboardLi = callboard.find('li'); var liLen = callboard.

php gzinflate无限加密与解决代码

PHP使用eval(gzinflate(str_rot13(base64_decode('BASE64加密后内容'))))核心代码的解密 下非扩展方式的php教程加密方法: 这里有个在线的,还不错.木马防杀还行,要保护代码可就不行了. 对应的写了一个简单的解密的, 专门针对eval.这个原理很有用途. 特别说明:此解密程序好像一定得在PHP5上面使用, 我在PHP4上面测试eval(gzinflate(str_rot13(base64_decode('BASE64加密后内容'))))内加密的代码

javascript 无限联动菜单效果代码_javascript技巧

2级联动 3级联动 4级联动 5级联动

一个很简单的无限分类树实现代码_导航菜单

国务院 省级办公单位 安徽 河南省 阜阳市 界首市 河北省 广东省 省级办公单位2 范冰冰2 范冰冰4 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 某导演 范冰冰2 范冰冰2 省级办公单位3 省级办公单位4 国务院 省级办公单位 安徽 河南省 阜阳市 界首市 河北省 广东省

php 无限级分类函数

  ar=array(0=>array('name'=>'食物','id'=>1,'pid'=>0),  02               1=>array('name'=>'植物','id'=>2,'pid'=>0),  03               3=>array('name'=>'白菜','id'=>3,'pid'=>1),  04               4=>array('name'=>'树','id'