热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

thinkphp实现无限分类

以上是效果图1.数据库设计2.添加后数据库的数据如下图解析下:cid栏目自增idpid栏目的父类id,id为0表示是顶级栏目cat_name栏目名称p...

\

以上是效果图

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[&#39;count&#39;]"
  8.     
  9. for
  10. {$v[&#39;cat_name&#39;]} 
  11.  
  12.  
  13.  

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

  • 推荐阅读
    • 本文详细介绍了MySQL中的存储程序概念及其分类,包括存储过程、存储函数、触发器和事件等,每种类型的特点及应用场景,并提供了创建、调用、删除和查看的方法。此外,还对比了存储过程与存储函数的主要区别,帮助读者更好地理解和应用这些数据库特性。 ... [详细]
    • 本文详细介绍了 SQL 中的 CHECK 约束,包括其作用、如何在创建表和修改表时应用 CHECK 约束,以及如何删除 CHECK 约束。CHECK 约束用于确保数据库中的数据符合预定义的条件,从而提高数据的完整性和可靠性。 ... [详细]
    • 基于函数实现的进制转换工具
      本文介绍了一种利用函数实现不同进制数(二进制、八进制、十进制)之间转换的方法。包括了程序的运行效果展示、所使用的主要函数解析、以及如何验证用户输入的合法性。整个项目仅使用了两个全局变量来存储用户的选项和输入的数值。 ... [详细]
    • CSGO
      CSGOTimeLimit:40002000MS(JavaOthers)MemoryLimit:524288524288K(JavaOthers)ProblemDescriptio ... [详细]
    • 本文详细介绍了C++中常见的容器(如列表、向量、双端队列等)及其迭代器的实现方式,通过具体代码示例展示了如何使用这些容器和迭代器。 ... [详细]
    • 本文探讨了在执行SQL查询时遇到的因字符集不同而导致查询结果差异的问题,特别是涉及中文字符时。文章分析了在不同字符集设置下,SQL查询结果的变化,并提供了详细的解决方案。 ... [详细]
    • CGroups: 资源管理和控制
      CGroups(Control Groups)是Linux内核提供的一个功能,旨在限制、记录和隔离进程组使用的物理资源,如CPU、内存和I/O等。它通过精细的资源管理,支持现代容器技术如Docker的资源限制需求。 ... [详细]
    • 本文详细介绍了MySQL数据库中的各种数据类型,包括整型、浮点型、字符型、文本型和日期时间型等,每种类型都有其特定的存储需求和使用场景。 ... [详细]
    • 本文详细介绍了如何通过Percona插件监控MySQL 5.7数据库,包括环境准备、插件安装、配置调整及数据测试等步骤,旨在为用户提供一个高效且稳定的监控解决方案。 ... [详细]
    • Django框架的使用教程mysql数据库[三]
      Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
    • SQL注入实验:SqliLabs第38至45关解析
      本文深入探讨了SqliLabs项目中的第38至45关,重点讲解了堆叠注入(Stacked Queries)的应用技巧及防御策略。通过实际案例分析,帮助读者理解如何利用和防范此类SQL注入攻击。 ... [详细]
    • Elasticsearch基础操作指南:使用Postman进行数据管理
      本文将介绍如何利用Postman工具执行基本的日志写入和数据管理操作。通过本教程,您将了解如何连接至Elasticsearch服务,创建索引,存储及检索数据。 ... [详细]
    • 统计报表模板及其实现方法
      本文介绍两个实用的统计报表模板,并提供如何将这些静态模板转换为动态JSP页面的方法。同时,文中附上了详细的代码示例。 ... [详细]
    • KKCMS代码审计初探
      本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
    • CentOS系统下设置JDK环境变量的方法
      本文将详细介绍如何在CentOS系统中为root用户配置JDK环境变量。包括JDK的安装路径设定、环境变量的添加及验证方法。 ... [详细]
    author-avatar
    美好生活的日子
    这个家伙很懒,什么也没留下!
    Tags | 热门标签
    RankList | 热门文章
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有