ThinkPHP运用递归实现无限级栏目分类

 本例中,只加入能实现效果的内容,其他额外内容视情况添加。

  1.首先,创建栏目表(column)


1

2

3

4

5

6

7

8

9

10


CREATE TABLE `column` (

`id`  int UNSIGNED NOT NULL AUTO_INCREMENT ,

`cname`  varchar(30) NULL ,

`pid`  int NULL DEFAULT 0 ,

PRIMARY KEY (`id`)

)

ENGINE=MyISAM

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

CHECKSUM=0

DELAY_KEY_WRITE=0;

插入几条测试数据

  这个很容易理解,就是pid等于id的即为其子栏目。这个就不用说了吧~

  2.在控制器中将所有栏目查询出来

  $result=M(‘column‘)->select();

  3.重要的一步,就是利用递归将其下的子栏目,以数组形式压入。我们用如下函数实现

  我们只要将第二步查出的数据运用这个函数,就会显示为下面这样的格式

  $list=column_merge($result);

  dump($list);

  因为前台也会涉及这个函数,所以我们将这个函数写在function.php文件中,然后将文件放在应用目录下(默认Application)的Common/common文件夹中,这样前台和后台就

  可以调用此函数了

  4.在模板显示

  先在控制器将数组分配过去

  $result=M(‘column‘)->select();

  $this->list=column_merge($result);

  然后在模样中输出


1

2

3

4

5

6


<volist name=‘list‘ id=‘top‘>

    <h2>{$top.cname}</h2>

        <volist name=‘top.son‘ id=‘son‘>

        <h4>{$son.cname}</h4>

        </volist>

</volist>

  至此,我们的基本效果就实现了。其他效果自行添加

张盖盖博客 http://www.zhanggaigai.com/b/1.html

ThinkPHP运用递归实现无限级栏目分类

时间: 2024-07-28 14:20:13

ThinkPHP运用递归实现无限级栏目分类的相关文章

Php无限级栏目分类读取的实现代码

实现无限极栏目分类思路: 获取自增加ID(也就是父ID) 然后在到数据库获取子ID(也就是uid子id) 数据如下id:1  uid:0  我是栏目1id:2  uid:1  我是栏目2id:3  uid:1  我是栏目1的子类 显示结果:                                                 我是栏目1                                                 我是栏目1的子类我是栏目2 <?php  $query

(实用篇)PHP递归实现无限级分类

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据. 首先

PHP不使用递归的无限级分类

不用递归实现无限级分类,简单测试了下性能比递归稍好一点点点,但写得太复杂了,还是递归简单方便点 代码: <?php $list = array( array('id'=>1, 'pid'=>0, 'deep'=>0, 'name'=>'test1'), array('id'=>2, 'pid'=>1, 'deep'=>1, 'name'=>'test2'), array('id'=>3, 'pid'=>0, 'deep'=>0, 'n

PHP递归实现无限级分类

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据. My

Thinkphp的list_to_tree 实现无限级分类列出所有节点

list_to_tree 使用起来十分方便,详细可查看手册.因为我在用的时候需要同时列出所有节点,所以写了一个递归函数,拿出来供大家参考. public function index(){ Load('extend'); //加载扩展方法 $Category=D('Category'); $list=$Category->order('sort desc')->select();//实现同级节点排序 $list=list_to_tree($list,'id','fid'); //详细参数见手册

织梦调用所有栏目一级二级三级和无限级栏目输出

一级.二级.三级.四级标签嵌套法 <ul> {dede:channelartlist row=7 typeid=top} <!-- 顶级 --> <li class="top"> <a href="{dede:field.typeurl/}" >{dede:field name='typename'/}</a> <ul class="sub"> {dede:channel t

PHP 实现无限极栏目分类

首先,创建一个DB CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` varchar(30) NOT NULL, `pid` mediumint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 然后插入数据 INSERT INTO `class` VALUES

dedecms二级栏目分类 使用channelartlist标签实现当前栏目高亮

在dedecms二级栏目分类,使用channelartlist标签实现当前栏目高亮,估计你没试过!不过开发的时候需要了,也就记下来分享给大家! 使用channel也可以,但是我们需要dede二级栏目下拉的时候就要用到这个了,呵呵,使用还是非常简单的 修改一个channelartlist类就可以了 下面介绍如何使用channelartlist标签实现当前栏目高亮 1.首先找到"include\taglib\channelartlist.lib.php"文件,打开 2.搜索代码 "

初学递归,接触无限分类,小小的尝试

今日学习的是无限循环,这与递归有关.其实我自己还不是完全熟悉和上手,还需要琢磨琢磨. 初步学习递归,算是无限分类的一个小练习. 表:cate id int auto 自动递增 pid int 0为最大的分类 catename varchar 分类名称 读取数据库的cate表分类如下: //分类练习 include '../include.php'; function getList($pid=0,&$result=array(),$spac=0) { $spac = $spac + 4; $sq