php无限极分类:

无限极分类重点在于表的设计:

1在model中:

class CatModel extends Model{
protected $cat = array();
public function __construct(){
parent::__construct();
$this->cats = $this->select();
}
public function getTree($parent_id=0,$lev=0){
$tree = array();
foreach($this->cats as $c){
if ($c['parent_id'] == $parent_id) {
$c['lev'] = $lev;
$tree[] = $c;
//再查出下层的目录拼接到一起去
$tree = array_merge($tree,$this->getTree($c['cat_id'] , $lev+1));
}
}
return $tree;
}
}

2在controller中:

class GoodsController extends Controller{
public function catelist(){
$catModel = D('Cat');
$catlist = $catModel->getTree();
//print_r($catlist);
$this->assign('list',$catlist);
$this->display();
}
}

3在view中:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>管理中心 - 商品分类 </title>
<meta name="robots" content="noindex, nofollow" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="__PUBLIC__/Admin/styles/general.css" rel="stylesheet" type="text/css" />
<link href="__PUBLIC__/Admin/styles/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1> <span class="action-span"><a href="cateadd.html">添加分类</a></span> <span class="action-span1"><a href="#">管理中心</a> </span><span id="search_id" class="action-span1"> - 商品分类 </span>
<div style="clear:both"></div> </h1>
<form method="post" action="" name="listForm">
<div class="list-div" id="listDiv">
<table width="100%" cellspacing="1" cellpadding="2" id="list-table">
<tbody>
<tr>
<th>分类名称</th>
<th>商品数量</th>
<th>数量单位</th>
<th>导航栏</th>
<th>是否显示</th>
<th>价格分级</th>
<th>排序</th>
<th>操作</th>
</tr> <foreach name='catlist' item='cal'>
<tr align="center" class="0" id="tr_2">
<td align="left" class="first-cell" style="padding-left="1""> <img src="__PUBLIC__/Admin/images/menu_minus.gif" id="icon_0_1" width="9" height="9" border="0" style="margin-left:{$cal['lev']*2}em" /> <span><a href="#">{$cal['cat_name']}</a></span> </td>
<td width="10%">0</td>
<td width="10%"><span> </span></td>
<td width="10%"><img src="__PUBLIC__/Admin/images/no.gif" /></td>
<td width="10%"><img src="__PUBLIC__/Admin/images/yes.gif" /></td>
<td><span>0</span></td>
<td width="10%" align="right"><span>50</span></td>
<td width="24%" align="center"><a href="{:U('admin/cat/catedit',array('cat_id'=>$cal['cat_id']))}">编辑</a> | <a href="{:U('admin/cat/catdel',array('cat_id'=>$cal['cat_id']))}" title="移除">移除</a> </td>
</tr>
</foreach> </tbody>
</table>
</div>
</form>
<include file='./Index:footer' />
</body>
</html>

效果如下:

php无限极分类以及递归(thinkphp)的更多相关文章

  1. c# 菜单无限极分类-利用递归

    表结构: 前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Web ...

  2. thinkphp 实现无限极分类

    thinkphp实现无限极分类,获得所有的子类 今天学习测试了一上午也没有整出来,一开始一直没有办法把所有的子分类拿出来. 最后找到原因: 每次调用的时候没有在最后return的位置我没有选择retu ...

  3. php无限极分类递归与普通

    1. 递归 public function getInfo(){$data=$this->select();$arr=$this->noLimit($data,$f_id=0,$level ...

  4. [thinkphp] 无限极分类

    <?php /* * 无限极分类 类 */ header("Content-Type: text/html; charset=UTF-8"); Class Category ...

  5. php不使用递归实现无限极分类

    无限极分类常用的是递归,但是比较不好理解,其实可以用数据库path,pid两个字段的设计来实现无限分类的功能 1.数据库设计 通过上图可以看出pid就是该栏目的父id,而path = 父path+pi ...

  6. PHP实现无限极分类的两种方式,递归和引用

    面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 $array = array( array('id' => 1, 'pid' =& ...

  7. 夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

    我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是 ...

  8. thinkphp5.0无限极分类及格式化输出

    首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的p ...

  9. js实现无限极分类

    转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...

随机推荐

  1. 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)

    对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...

  2. BZOJ 4008 【HNOI2015】 亚瑟王

    题目链接:亚瑟王 这道题好神啊TAT--果然我的dp还是太弱了-- 一开始想了半天的直接dp求期望,结果最后WA的不知所云-- 最后去翻了题解,然后发现先算概率,再求期望--新姿势\(get\). 我 ...

  3. C++基本数据类型总结

    一.整形 1.整形有char.short.int.long.long long,这5个也默认为signed XX ; 规则:short至少16位:int至少和short一样:long至少32位,且至少 ...

  4. docker学习(4) 一些常用操作

    继续docker的学习之旅,今天练习一些常用的命令: 一.镜像相关 1.1 列出本机所有镜像 docker images 后面的操作,都以ubuntu做为练习的目标. 另外:如果某些镜像文件不想要了, ...

  5. .NET跨平台之旅:在Linux上将ASP.NET 5运行日志写入文件

    在前一篇博文(增加文件日志功能遇到的挫折)中,我们遇到了这样一个问题:虽然有一些.NET日志组件(比如Serilog, NLog)已经开始支持.NET Core,但目前只支持控制台输出日志,不支持将日 ...

  6. 判断是pc端还是手机端,并跳转到相应页面

    <!-- 判断浏览器是否为手机端 -->  <script>     // class     ! function(navigator) {         var user ...

  7. C# readonly 与const

    引自:http://www.cnblogs.com/ryuasuka/p/3342282.html?utm_source=tuicool&utm_medium=referral 现在正在学&l ...

  8. SQL基础语法(二)

    SQL SELECT 语句 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL ...

  9. sql server生成递归日期

    WITH Date AS ( SELECT CAST('2008-08-01' AS DATETIME) da UNION ALL FROM Date WHERE da < '2008-08-2 ...

  10. iOS dealloc 不被调用的问题

    最近项目中老是无缘无故的出现一下奔溃.查看一下堆栈信息,指针的指向都有,但还是奔溃.所以第一个怀疑出现野指针引起的问题.然后调试代码中的一下dealloc函数.好多对象在释放之后都没掉用.顿时吓出一身 ...