后台无限级分类添加的实现方式

1.数据库设计添加字段父级分类ID号parent_id和path路径,0代表为根分类(一级分类),一个‘_’代表二级分类: 
这里写图片描述

2.添加分类模板修改为选择父级分类名: 
这里写图片描述
模板中添加parent_id提交,如下:

    <tr>
        <th width="120"><i class="require-red">*</i>上级分类:</th> <td> <select name="parent_id" class="required"> <option value="">请选择</option> <!--还未做非空验证--> <foreach name='cateList' item='val'> <option value="{$val.cate_id}">{:str_repeat('&nbsp;',substr_count($val['path'],'_')*4)}{$val.cate_name}</option> </foreach> </select> </td> </tr>

3.后台接收进行查询,拼接parent_id的组成path,然后进行数据入库;

    /*分类添加方法
      author:ren
      return:void
    */
    public function add(){ //如果POST了提交则入库 if(IS_POST){ $data=I('post.'); // 若没设置父级,则自动识别为根分类 if(empty($data['parent_id'])){ $data['path']=0; }else{ //查询父级ID的path字段值 $parentPath=M('category')->where("cate_id='$data[parent_id]'")->getField('path'); //拼接添加分类的path值 $data['path']=$parentPath.'_'.$data['parent_id']; } $result=M('category')->add($data); if($result){ $this->success('添加成功!',U('Category/index')); }else{ $this->error("添加出错..."); } }else{ //没提交动作则正常显示分类添加模板 $cateList=D('category')->getCategoryTree(); $this->assign('cateList',$cateList); $this->display(); } }

猜你喜欢

转载自www.cnblogs.com/phpzlq/p/9075433.html