首页 > PHP资讯 > PHP培训技术 > thinkphp实现无限分类

thinkphp实现无限分类

PHP培训技术

以上是效果图

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. class CategoryModel extends Model{ 
  2. protected $_auto=array
  3. array('path','tclm',3,'callback'), 
  4. ); 
  5. function tclm(){ 
  6. $pid=isset($_POST['pid'])?(int)$_POST['pid']:0; 
  7. //echo ($pid); 
  8. if($pid==0){ 
  9. $data=0; 
  10. }else
  11. $list=$this->where("cid=$pid")->find(); 
  12. $data=$list['path'].'-'.$list['cid'];//子类的path为父类的path加上父类的cid 
  13. return $data
  14. ?> 

4,主要的html代码

  1.  
  2. "__URL__/addCat" method="post" > 
  3. "text-align:center;margin-top:80px;" > 
  4. 请选择父类栏目:"pid"   size="20"  style="width:250px;"
  5. "alist"   id="v" > 
  6. "{$v['cid']}" > 
  7. <for start="0" end="$v['count']"
  8.     
  9. for
  10. {$v['cat_name']} 
  11.  
  12.  
  13.  

  14.  
  15. 新的栏目名称:"text" name="cat_name" style="width:230px;"  />
     
  16. "submit"  value="添加栏目" /> 
 
  •  
  •  
  • PHP培训技术

    本文由欣才IT学院整理发布,未经许可,禁止转载。
    支持43不支持0