thinkphp 实现无限分类

1.数据库设计

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

解析下:cid  栏目自增id

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

cat_name  栏目名称

path 表示栏目的层级关系

实现效果主要用到:

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

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

  1. public function   fenlei  (){ 

  2. $cate=M('Category'); 

  3. $list=$cate->field("cid,cat_name,pid,path,concat(path,'-',cid) as bpath")->order('bpath')->select(); 

  4. foreach($list as $key=>$value){ 

  5. $list[$key]['count']=count(explode('-',$value['bpath'])); 

  6. $this->assign('alist',$list); 

  7. $this->display(); 

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

  1. public function addCat(){ 

  2. $cate=D('Category'); 

  3. if($cate->create()){ 

  4. if($cate->add()){ 

  5. $this->redirect('/Test/fenlei'); 

  6. }else

  7. $this->error('添加栏目失败'); 

  8. }else

  9. $this->error($cate->getError()); 

3,栏目模型类

  1. <?php 

  2. class CategoryModel extends Model{ 

  3. protected $_auto=array

  4. array('path','tclm',3,'callback'), 

  5. ); 

  6. function tclm(){ 

  7. $pid=isset($_POST['pid'])?(int)$_POST['pid']:0; 

  8. //echo ($pid); 

  9. if($pid==0){ 

  10. $data=0; 

  11. }else

  12. $list=$this->where("cid=$pid")->find(); 

  13. $data=$list['path'].'-'.$list['cid'];//子类的path为父类的path加上父类的cid 

  14. return $data

  15. ?> 

4,主要的html代码

  1. <form action="__URL__/addCat" method="post" > 

  2. <div style="text-align:center;margin-top:80px;" > 

  3. 请选择父类栏目:<select  name="pid"   size="20"  style="width:250px;"

  4. <volist name="alist"   id="v" > 

  5. <option value="{$v['cid']}" > 

  6. <for start="0" end="$

评论 (6)

  • elilk Reply

    Jul 21 2021 09:50 am
  • Zivind Reply

    涉及广告推广,审核未通过

    Apr 17 2021 12:55 pm
  • AndrewWrith Reply

    涉及广告推广,审核未通过

    Apr 15 2021 04:40 am
  • AngelToipt Reply

    涉及广告推广,审核未通过

    Apr 01 2021 07:08 pm
  • Forexshing Reply

    涉及广告推广,审核未通过

    Mar 15 2021 04:45 pm
  • ForexWads Reply

    涉及广告推广,审核未通过

    Feb 11 2021 06:53 am

发表评论