频道栏目
首页 > 资讯 > ThinkPHP > 正文

thinkphp 实现无限分类

16-01-06        来源:[db:作者]  
收藏   我要投稿

\

以上是效果图

1.数据库设计

\

2.添加后数据库的数据如下图

\

解析下:cid 栏目自增id

pid 栏目的父类id,id为0表示是顶级栏目

cat_name 栏目名称

path 表示栏目的层级关系

实现效果主要用到:

mysql的一个函数 concat():返回结果为连接参数产生的字符串

1,控制器的分类显示方法

  1. publicfunctionfenlei(){ $cate=M('Category');
  2. $list=$cate->field("cid,cat_name,pid,path,concat(path,'-',cid)asbpath")->order('bpath')->select(); foreach($listas$key=>$value){
  3. $list[$key]['count']=count(explode('-',$value['bpath'])); }
  4. $this->assign('alist',$list); $this->display();
  5. }

2,控制器的分类添加方法

  1. publicfunctionaddCat(){ $cate=D('Category');
  2. if($cate->create()){ if($cate->add()){
  3. $this->redirect('/Test/fenlei'); }else{
  4. $this->error('添加栏目失败'); }
  5. }else{ $this->error($cate->getError());
  6. } }

3,栏目模型类

  1. protected$_auto=array( array('path','tclm',3,'callback'),
  2. ); functiontclm(){
  3. $pid=isset($_POST['pid'])?(int)$_POST['pid']:0; //echo($pid);
  4. if($pid==0){ $data=0;
  5. }else{ $list=$this->where("cid=$pid")->find();
  6. $data=$list['path'].'-'.$list['cid'];//子类的path为父类的path加上父类的cid }
  7. return$data; }
  8. } ?>

4,主要的html代码

  1. 请选择父类栏目:
  2.    
  3. {$v['cat_name']}

  4. 新的栏目名称:
  • 点击复制链接 与好友分享!回本站首页
    相关TAG标签
    上一篇:网站子模块上传后影响原先的界面显示 莫名其妙的有关问题
    下一篇:Yii框架中CGridView结果为空时不显示No Results Found
    相关文章
    热门专题推荐 vmware win7激活工具 win10激活工具 excel word office激活 小马激活工具 重装系统 数据恢复 u盘启动工具
    图文推荐
    文章
    推荐
    热门新闻

    关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

    版权所有: 红黑联盟--致力于做实用的IT技术学习网站