ThinkPHP开发

php+Thinkphp+无限极分类 递归方法代码

2016-10-28  本文已影响121人  老牛圣斗士

第一步、创建数据库

数据表创建直接复制到mysql管理器里直接运行即可。

DROP TABLE IF EXISTS `lqr_class`;

CREATE TABLE `lqr_class` (

`Id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(50) DEFAULT NULL COMMENT '分类名称',

`typeid` int(11) DEFAULT '0' COMMENT '上级分类0表示一级',

`describe` varchar(255) DEFAULT NULL COMMENT '描述',

`sort` int(11) DEFAULT '0' COMMENT '排序',

`status` int(11) DEFAULT '0' COMMENT '是否显示0正常1隐藏',

`count` int(11) DEFAULT '0',

PRIMARY KEY (`Id`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

第二步、查询数据集合

//实例化class表

$Class = M('Class');

$list = $Class->order('Id desc')->select();

$list=$this->tree($list);

$data['list']=$list;

$this->assign('data',$data);//thinkphp输出模板页循环list

第三步、递归分类实现方法

static public $treeList = array(); //存放无限分类结果如果一页面有多个无限分类可以使用 Tool::$treeList = array(); 清空

/**

* 无限级分类

* @access public

* @param Array $data    //数据库里获取的结果集

* @param Int $pid

* @param Int $count      //第几级分类

* @return Array $treeList

*/

static  public function tree($data,$pid = 0,$count = 1)

{

foreach ($data as $key => $value)

{

if($value['typeid']==$pid)

{

$value['count'] = $count;

self::$treeList []=$value;

unset($data[$key]);

self::tree($data,$value['id'],$count+1);

}

}

return self::$treeList ;

}

第四步、输出模板页

<foreach name="data.list" item="vo">

<for start="0" end="$vo['count']">

<if condition="$i eq 0 ">

<else />-

</if>

{$vo['title']}

</foreach>

//注意for是用于循环几级分类,有阶梯的效果显示作用

到此就实现了无限极分类了。

上一篇下一篇

猜你喜欢

热点阅读