PHP 使用编码树,生成easyui中的tree样式
生成树的时候,数据库中一般设计的都为无级数,即为:父子节点的树,例如:基本的数据表设计为:
nodecode 节点编码
parentnodecode 父节点编码
nodename 节点名称
这样的形式,在生成树的时候,根据子找父,再找爷爷的关系,一直找到最顶级,来确定一个从属关系,如果由父级找子级再找孙子级,那么,就可以有无限个孩子级,所以这种情况,适合不限分类的一种写法,但是这种写法带来的结果就是,效率比较低,处理的时间长,所以在开发过程中,就出现了一种编码树的形式:基本的数据表设计为:
nodecode 节点编码
nodename 节点名称
这种编码树,子节点,带着父节点的信息,比如说节点编码为:001 名称为:1级 节点编码为:001001 名称为:1_1级,从此可以看出,我只要看到001001就能知道他的父级是谁,也能知道他的子集是谁,在数据库中只要使用 likt '001001%',即可得到,以nodecoder的长度为varchar(30)为例,则最多产生10个子集,即001001001001001001001001001001这样的关系,如果以3位长度为一个节点的长度,则可产生999个同级分类,如果以4个节点长度,则可产生9999个节点,所以随着每个节点的长度的增长,可以容纳更多的节点和子集,此适合不是无限级分类的使用。
使用无级树,在网上有许多生成easyui中tree使用Json的方法,下面这样方法是根据编码生生成json的方式,仅为简单的一个实现:
1 public function getTree($root,$text="typename",$value="typecode", $fileLength = 3) {
2 $childNode = array();
3 foreach ($root as $key=>$node) {
4 unset($childNode);
5 foreach ($root as $k => $v) {
6 if ($this->startWith($v["typecode"], $node["typecode"]) && $v["typecode"] != $node["typecode"]) {
7 $childNode[] = $v;
8 }
9 }
10 $treeNode = array();
11 if (strlen($node["typecode"]) == $fileLength) {
12 $treeNode['children'] = $this->getTree($childNode,$text,$value, $fileLength + 3);
13 $treeNode["id"] = $node[$value];
14 $treeNode["text"] = $node[$text];
15 $treeNode["value"] = $node[$value];
16 $treeNode["checked"] = "false";
17 // $node["attributes"] = $node;
18 $treeNode["state"] = "open";
19 $tree[] = $treeNode;
20 }
21 }
22 return $tree;
23 }
24 private function startWith($str, $needle) {
25 return strpos($str, $needle) === 0;
26 }
PHP 使用编码树,生成easyui中的tree样式的更多相关文章
- 关于EasyUI中的Tree
2017年6月21日,天气阴.心情比较沉重. 近期由于毕设的事情,三周不写代码了.这周测试提交了一些BUG,于是开始着手处理,还真的是熟能生巧,三周的功夫就感觉有点生疏.其中有一个BUG就是角色对应的 ...
- easyui中连接按钮样式
方法1. <a href="otherpage.php" class="easyui-linkbutton" data-options="ico ...
- easyui中tree型控件不正常显示的处理方法
我在使用easyui中的tree控件时,出现不正常显示的现象,比如li中不能使用自定义的图标.父级展开或关闭时,其子级仍然显现并出现重叠等.找了很多资料,都没解决这个问题,后来逐个对照官方的源码,才找 ...
- easyui中的几个问题
easyui中的tree,采用url参数读取json,无法显示.有可能是vs的IIS不支持,$.ajax 原因待测试,有知道的朋友也可以贴代码,我解决的一个办法是 $(function () { $. ...
- EasyUI中动态生成标签页
这是最近学到的内容,当时是有思路但是不知道怎么获取当前的点击对象,就没有实现功能,通过更深入的学习,我知道了不仅仅是Java,Oracle中有一个this,同样的EasyUI中也存在一个this,来获 ...
- jQuery EasyUI中DataGird动态生成列的方法
EasyUI中使用DataGird显示数据列表中,有时需要根据需要显示不同的列,例如,在权限管理中,不同的用户登录后只能查看自己权限范围内的列表字段,这就需要DataGird动态组合列,下面介绍Eas ...
- 做权限树时 使用EasyUI中Tree
符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ "id":1, "text":"My Documents", & ...
- 使用EasyUI中Tree
easyui里面的加载tree的两种方式 第一种: 使用EasyUI中Tree 符合EasyUI中Tree的Json格式,我们先看一下,格式是如何的 [{ , "text":&qu ...
- EasyUI中datagrid控件的使用 设置多行表头(两行或多行)
EasyUI中的datagrid控件十分强大,能生成各种复杂的报表,现在因为项目需要,需要生成一个表头两行的表,找了一些说明文档,以下用一个实例来说明一下: 第一种方法: $('#divData'). ...
随机推荐
- 纯CSS3写的10个不同的酷炫图片遮罩层效果【转】
这个是纯CSS3实现的的10个不同的酷炫图片遮罩层效果,可以欣赏一下 在线预览 下载地址 实例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- [IOS初学]ios 第一篇 storyboard 与viewcontroller的关系
学习了一下ios,把一个基本的概念搞清楚了,在android或者wp中,大家基本都是习惯与一个画面场景代表一个类,新建场景的时候自动新建了类,但在ios中使用了storyboard之后发现,在stor ...
- oracle[insert 时报错: 单行子查询返回多行]
-- 错误的写法 insert into t_b_partner_vehicle(id, partner_id, vehicle_id) (seq_t_b_partner_vehicle.nextva ...
- # 20145205 《Java程序设计》第1周学习总结
教材学习内容总结 第一章中 JAVA的三大体系:JAVA SE .JAVA EE.JAVA ME.而在其中书中主要介绍我们入门学习者所要学习的JVAA SE,其又可分为四个主要组成部分同Java SE ...
- 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏
最近互联网招聘平台拉勾网在五一期间推出个“最难面试的IT公司”代码挑战活动,评选出了5个最难面试的IT公司,即:ThoughtWorks.Google.Unisys.Rackspace.Cypress ...
- 规范和封装jdbc程序代码
JDBC 部分方法引用工具类 package it.cast.jdbc; import java.sql.Connection; import java.sql.DriverManager; impo ...
- 【iCore3 双核心板】【发布基于 iCore3的显示模块(包含7寸屏,4.3寸屏,vga模块等】
====================注意 ==================== 1.本代码仅仅对iCore3客户(使用者)开放: 2.iCore3使用者凭购买id或者订单号给 gingko[A ...
- java 启动 shell脚本
run.sh p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #000000 ...
- 将bean转换成键值列表
日常开发中在进行接口对接的数据传输时,有一种场景是将bean转成jsonString,这里可以将bean转换成Map再转成jsonString. 工具类如下: public static String ...
- 更换Mac记录
1. 重装Mac (1)格式化硬盘 (2)重装系统 (3)修改各种配置:电脑名.键盘等 2. 安装必要软件 (1)QQ.微信.网易云音乐等 (2)火狐.谷歌.SourceTree等 (3)安装Git ...