如果你需要更好看的无限分类,请查看
http://www.cnblogs.com/zx-admin/p/8021734.html //新闻类别管理
public function new_classify() { $arr = M('news_classify')->where("fid = 0")->select();
$html = '<ul class="easyui-tree"><li><span>新闻中心</span><ul>';
if (!empty($arr)) {
$html .= $this->_tree($arr);
}
$html .= '</ul></li></ul>'; $this->assign("html", $html);
$this->display();
} //递归树
public function _tree($arr) { foreach ($arr as $key => $v) { $fid1 = $v['id'];
//查询是否有子类
$res = M('news_classify')->where("fid = $fid1")->select(); if (!empty($res)) {
$html .= '<li ';
if (!empty($res)) {
$html .= 'data-options="state:\'closed\'"';
}
$html .= '> <span> ' . $v["new_classify_name"] . '&nbsp;&nbsp;&nbsp;&nbsp;<a id="new_classify_edit" rel=' . $v["id"] . '">编辑</a>&nbsp;&nbsp;&nbsp;&nbsp;<a id="new_classify_del" rel=' . $v["id"] . '>删除</a></span><ul>'; $html .= $this->_tree($res); $html .= '</ul></li>';
} else {
$html .= '<li ';
if (!empty($res)) {
$html .= 'data-options="state:\'closed\'"';
}
$html .= '> <span> ' . $v["new_classify_name"] . '&nbsp;&nbsp;&nbsp;&nbsp;<a id="new_classify_edit" rel=' . $v["id"] . '">编辑</a>&nbsp;&nbsp;&nbsp;&nbsp;<a id="new_classify_del" rel=' . $v["id"] . '>删除</a></span><ul>'; // $html .= $this->_tree($res); //为空就不需要继续遍历 $html .= '</ul></li>';
} } return $html;
}

id fid父ID new_classify_name分类名称 is_show是否显示 sort_id排序id urlurl链接
 编辑  复制  删除 1 0 新闻 0 0  
 编辑  复制  删除 2 0 公告 0 0  
 编辑  复制  删除 3 1 体育 0 0  
 编辑  复制  删除 4 2 教育 0 0  
 编辑  复制  删除 5 3 想详细 0 0  
 编辑  复制  删除 6 4 是飞洒的 0 0  
 
 
 表结构就这样了,还需要的一个结构的下拉框的结构
function _tree($arr, $fid = 0, $level = 0) {
static $tree = array(); #用于保存重组的结果,注意使用静态变量
foreach ($arr as $v) {
if ($v['fid'] == $fid) {
//说明找到了以$pid为父节点的子节点,将其保存
$v['level'] = $level;
$tree[] = $v;
//然后以当前节点为父节点,继续找其后代节点
_tree($arr, $v['id'], $level + 1);
}
}
return $tree;
}

调用返回结果,这段代码随便拔下来的,需要改一下才能看到结果

 <?php foreach ($classify as $value) {  ?>

                   <form action="<?php echo site_url('admin/classify_update');?>" class="jqtransform" method="post">
<table class="form_table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="td_center">第<?php echo ($value['level']+1);?>级分类:</td>
<td class="">
<input type="hidden" name="id" value="<?php echo $value['id'];?>" />
<?php echo str_repeat("+++++++", $value['level'])?> <input type="text" name="title" class="input-text lh30" size="15" value="<?php echo $value['title'];?>"> &nbsp;&nbsp;<input type="text" name="url" class="input-text lh30" size="15" value="<?php echo $value['url'];?>">
<input type="submit" value="更新" class="ext_btn ext_btn_submit" onclick="location.href='<?php echo base_url('')."index.php/admin/classify_update/".$value['id'];?>'">
<input type="button" class="ext_btn ext_btn_error" value="删除" onclick="location.href='<?php echo base_url('')."index.php/admin/classify_del/".$value['id'];?>'">
</td>
</tr>
</table>
</form> <?php } ?>
 html
 
http://www.jeasyui.com/demo/main/index.php?plugin=Tree&theme=gray&dir=ltr&pitem=
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Tree - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="easyui.css">
<link rel="stylesheet" type="text/css" href="icon.css"> <script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.easyui.min.js"></script>
</head>
<body>
<h2>Basic Tree</h2>
<p>Click the arrow on the left to expand or collapse nodes.</p>
<div style="margin:20px 0;"></div>
<div class="easyui-panel" style="padding:5px">
<ul class="easyui-tree">
<li>
<span>My Documents</span>
<ul>
<li data-options="state:'closed'">
<span>Photos <a href="http://www.baidu.com">编辑</a> <a href="http://www.baidu.com">删除</a></span>
<ul>
<li>
<span>Friend22222 <a href="http://www.baidu.com">编1111111111111辑</a> </span>
</li>
<li>
<span>Wife</span>
</li>
<li>
<span>Company</span>
</li>
</ul>
</li>
<li>
<span>Program Files</span>
<ul>
<li>Intel</li>
<li>Java</li>
<li>Microsoft Office</li>
<li>Games</li>
</ul>
</li>
<li>index.html</li>
<li>about.html</li>
<li>welcome.html</li>
</ul>
</li>
</ul>
</div> </body>
</html>
 
 

后台树状菜单,js实现递归无限分类的更多相关文章

  1. 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)

    初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...

  2. js, 树状菜单隐藏显示

    js写的不是很严谨~~~嘿嘿   <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. 自写JQ控件-树状菜单控件[demo下载]

    一个多月没有写博客了,最近也弄一个基于JQ的树状菜单控件,在此分享给大家.另外呢,通过这个例子分享一下怎么写JQ控件的. 事实上工作中,也是经常遇到的,有些时候自己想实现一些前端效果,用网上一些插件吧 ...

  4. MVC身份验证.MVC过滤器.MVC6关键字Task,Async.前端模拟表单验证,提交.自定义匿名集合.Edge导出到Excel.BootstrapTree树状菜单的全选和反选.bootstrap可搜索可多选可全选下拉框

    1.MVC身份验证. 有两种方式.一个是传统的所有控制器继承自定义Control,然后再里面用MVC的过滤器拦截.所以每次网站的后台被访问时.就会先走入拦截器.进行前端和后端的验证 一个是利用(MVC ...

  5. 纯CSS打造可折叠树状菜单

    1:Html代码 <li> <label for="subsubfolder1">下级</label> <input id="s ...

  6. 学用纯CSS打造可折叠树状菜单

    随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习.但是历史告诉我们,好的东西必将盛行,CSS3也终将也会替代CSS2,下面就和大家分享一个 ...

  7. C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用心得

    在网上查了很多,发现没有讲述关于--C#winform菜单权限分配,与菜单同步的treeView树状菜单权限控制使用--的资料 自己研究了一个使用方法.下面来看看. 我有两个窗体:LOGINFRM,M ...

  8. php递归无限分类、根据子类获取所有顶类

    //递归无限分类树 public static function diGui($data, $pid) { $arr = collect([]); if (empty($data)) { return ...

  9. 使用Map辅助拼装树状结构,消除递归调用

    目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...

随机推荐

  1. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  2. linux各目录的作用

  3. vuejs

    简介 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易 ...

  4. python之路二

    .pyc是个什么鬼? 1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存 ...

  5. json死循环问题

    20.JSON死循环问题: 向前台发送的数据: 出现此类问题主要是由于在所传数据中有包含关系,比如ElementGroup中有Element,Element中又有ElementGroup,此时就会出现 ...

  6. UILocalNotification本地通知的使用方法

    本文所写方法主要应用UILocalNotification达到本地推送通知栏信息 取消了其他教程里过期的UIAlertView方法 使用UILocalNotification主要分为创建 调用 取消 ...

  7. Ubuntu配置svn

    http://www.cnblogs.com/arrongao/archive/2013/03/30/linux_svn.html

  8. 【学习笔记】ES6标准入门

    这里简要记录一下对自己感触比较深的几个知识点,将核心的应用投放于实际的项目之中,提供代码的可维护性. 一.let和const { // let声明的变量只在let命令所在的代码块内有效 let a = ...

  9. android系统中自带的一些ThemeStyle

    1 android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen" 布局页面最上面 不会显示  and ...

  10. k-means聚类算法python实现

    K-means聚类算法 算法优缺点: 优点:容易实现缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他 ...