美文网首页
php->无限级分类

php->无限级分类

作者: AloneStray | 来源:发表于2016-12-11 18:23 被阅读0次

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

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

          }
  }

}
?>
</pre>
视图
<pre>
<tr>
<td class="label">上级分类:</td>
<td>
<select name="parent_id">
<option value="0">顶级分类</option>
<?php foreach ($cats as $cat) :?>
<option value="<?php echo $cat['cat_id'];?>">
<?php echo str_repeat(" ", $cat['level']);?>
<?php echo $cat['cat_name'];?>
</option>
<?php endforeach;?>
</select>
</td>
</tr>
</pre>
积累函数:trim() 去掉空白 str_repeat(' ',n) 重复前面的内容n次
积累快捷键:ctrl+shift+D 快速复制一行,ctrl+D 选中相同的,相同东西同时修改

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

相关文章

  • php->无限级分类

    用php实现下面的功能,方法:数据库表的合理设计+递归 1.业务逻辑(1)表结构分类表字段:cat_id、cat_...

  • 无限级分类

    1.有两种实现方式:a.递归方式,b.迭代方式; a.递归方式:(实现家谱树和子孙树) 家谱树: /** ...

  • 2018-12-10

    复习无限级分类

  • 预排序遍历树

    什么是左右值无限级分类左右值无限级分类,也称为预排序树无限级分类,是一种有序的树状结构,位于这些树状结构中的每一个...

  • 2018 10 16

    学习商城的无限级分类

  • PHP无限级分类

    layout: posttitle: "PHP无限级分类"date: 2016-04-29 09:36:19 +0...

  • laravel无限级分类

    用laravel 做无限极分类;找了很多资料;假大空;有很多都是残缺的;而且达不到预期;无法做到无限极;今天分享下...

  • golang 无限级分类

    分类结构 分类列表如下 递归实现

  • PHP无限级分类(一)

    无限级分类在web项目中应用非常广泛,比如商品分类、权限节点、组织架构等等。下面介绍两种将二维数组整理成无限级树形...

  • PHP无限级分类(二)

    在 PHP无限级分类(一) 中,我们介绍了两种简单的无限级分类构造方法。下面介绍一种从树形结构中获取子结构的方法:...

网友评论

      本文标题:php->无限级分类

      本文链接:https://www.haomeiwen.com/subject/onqpmttx.html