php->无限级分类

用php实现下面的功能,方法:数据库表的合理设计+递归

php->无限级分类_第1张图片

1.业务逻辑
(1)表结构
分类表
字段:cat_id、cat_name、cat_desc、、、parent_id(ps:每个分类的上一级分类)
(2)商品分类功能具体分析
分类控制器:CategoryController.class.php
分类模型: CategoryModel.class.php
curd(具体增、删、改、查):
添加分类:1.显示分类表单 2.接收数据插入数据库
修改分类表单:1.显示修改表单 2.接收更新数据插入数据库
删除:一步操作,直接删除
关键代码实现如下:
分类模型


//商品分类模型
class CategoryModel extends Model{
//获取所有分类
public function getCats(){
$sql="select * from {$this->table}";
$cats=$this->db->getAll($sql);
return $this->tree($cats);
}
//对所有获取的分类重新排序
function tree($arr,$pid=0,$level=0)
{
static $res=array();
foreach ($arr as $v)
{
if($v['parent_id']==$pid)
{
$v['level']=$level;
$res[]=$v;
$this->tree($arr,$v['cat_id'],$level+1);
}
}
return $res;
}
}
?>

分类控制器模型

后台商品分类管理
class CategoryController extends Controller{
//显示分类
public function indexAction(){
include CUR_VIEW_PATH.'cat_list.html';
}
//添加分类,1.显示添加表单 2.接收数据插入到数据库
public function addAction(){
//获取所有分类
$CategoryModel=new CategoryModel('category');
$cats=$this->getCats();
include CUR_VIEW_PATH.'cat_add.html';
}
public function insertAction(){
//1.接收数据 ?以什么形式收集
$date['cat_name']=trim($_POST['cat_name']);
$date['parent_id']=$_POST['parent_id'];
$date['unit']=$_POST['unit'];
$date['sort_order']=$_POST['sort_order'];
$date['cat_des']=trim($_POST['cat_des']);
$date['is_show']=$_POST['is_show'];

        //2.验证接收到的数据和处理
          if($date['cat_name']===''){
              $this->jump('index.php?p=admin&c=category&a=add','分类名称不能为空');
          }
        //调用模型插入数据库并给出提示
          $categoryModel=new CategoryModel('category');
          if($categoryModel->insert($date)){
          $this->jump('index.php?p=admin&c=category&a=index','success');
          }else{
           $this->jump('index.php?p=admin&c=category&a=add','fail');

          }
  }

}
?>


视图


上级分类:





积累函数:trim() 去掉空白 str_repeat(' ',n) 重复前面的内容n次
积累快捷键:ctrl+shift+D 快速复制一行,ctrl+D 选中相同的,相同东西同时修改

2333第一次用写东西,代码框,插图搞了半天、、、
代码框:pre
插图:七牛很好用哦!img标签引入即可
近期打算,尽快用git,把源码托管到上面

你可能感兴趣的:(php->无限级分类)