PHP使用递归生成文章树
因为自己的一个技术站,以文章为主,文章有些是一个系列的,所以想把这些文章归类,同一类的在一个下面。
数据库好设计,无非用id,fatherid来进行归类,fatherid代表父类是那篇文章的id,id是文章的唯一id,层次不限,可以是两层,可以是三层。fatherid为0的表示顶层文章。
php代码,主要是递归
function category_tree($fatherid){ //require_once("mysql_class/config.inc.php"); //require_once("mysql_class/Database.class.php"); $db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE); $db->connect(); $sql = "SELECT id,title,url FROM ".TABLE_TASK." WHERE fatherid=$fatherid and ispublic=1 order by id asc"; $articles = $db->query($sql); $db->close(); while ($record = $db->fetch_array($articles)){ $i = 0; if ($i == 0){ if($fatherid==0){ echo '<ul class="article-list-no-style border-bottom">'; }else{ echo '<ul class="article-list-no-style">'; } } if($fatherid==0){ echo '<li><span class="glyphicon glyphicon-log-in" aria-hidden="true" id="han'.$record['id'].'"> </span> <a href="'.$record['url'].'" target="_blank">' . $record['title'].'</a>'; }else{ echo '<li><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"> </span> <a href="'.$record['url'].'" target="_blank">' . $record['title'].'</a>'; } category_tree($record['id']); echo '</li>'; $i++; if ($i > 0){ echo '</ul>'; } } }
调用:
category_tree(0) //先提取最顶层文章
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关推荐
-
php可应用于面包屑导航的递归寻找家谱树实现方法
本文实例讲述了php可应用于面包屑导航的递归寻找家谱树实现方法.分享给大家供大家参考.具体实现方法如下: <?php echo "<pre>"; $area = array( array('id'=>1,'area'=>'北京','pid'=>0), array('id'=>2,'area'=>'广西','pid'=>0), array('id'=>3,'area'=>'广东','pid'=>0), array('
-
基于递归实现的php树形菜单代码
本文实例讲述了基于递归实现的php树形菜单代码.分享给大家供大家参考.具体实现方法如下: 开发电子商务网站的时候,做了这个显示树形菜单的功能,用的递归实现的PHP树形菜单函数.具体代码如下: 复制代码 代码如下: public function procCategory($sid,$pid){ $return = array(); $key = 0; static $arr = array(); //分类级别参考数组 $sql = "select cid,pcid,name from shop
-
PHP递归实现层级树状展开
本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: <?php $db = mysql_connect('localhost', 'root', 'root') or die('Can\'t connect to database'); mysql_select_db('test') or die('Can\'t find database : test'); $result = mysql_query('select id, fid, na
-
php通过前序遍历树实现无需递归的无限极分类
本文实例讲述了php通过前序遍历树实现无需递归的无限极分类.分享给大家供大家参考.具体如下: 大家通常都是使用递归实现无限极分类都知道递归效率很低,下面介绍一种改进的前序遍历树算法,不适用递归实现无限极分类,在大数据量实现树状层级结构的时候效率更高. sql代码如下: CREATE TABLE IF NOT EXISTS `category` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `lft` i
-
PHP树-不需要递归的实现方法
PHP树-不需要递归的实现方法 /** * 创建父节点树形数组 * 参数 * $ar 数组,邻接列表方式组织的数据 * $id 数组中作为主键的下标或关联键名 * $pid 数组中作为父键的下标或关联键名 * 返回 多维数组 **/ function find_parent($ar, $id='id', $pid='pid') { foreach($ar as $v) $t[$v[$id]] = $v; foreach ($t as $k => $item){ if( $item[$pid] )
-
PHP使用递归生成文章树
因为自己的一个技术站,以文章为主,文章有些是一个系列的,所以想把这些文章归类,同一类的在一个下面. 数据库好设计,无非用id,fatherid来进行归类,fatherid代表父类是那篇文章的id,id是文章的唯一id,层次不限,可以是两层,可以是三层.fatherid为0的表示顶层文章. php代码,主要是递归 function category_tree($fatherid){ //require_once("mysql_class/config.inc.php"); //requi
-
java后端把数据转换为树,map递归生成json树,返回给前端(后台转换)
java 后端,把数据转换为树,map递归生成一颗json树,返回给前端(后台转换) 1.为什么要写这样的一篇博客? 2.java 后端代码 3. 转化完的数据在前端格式为类似于: 1.为什么要写这样的一篇博客? 在公司的实习的时候,遇到了一个略坑的东西,就是要医院的科室通过其子父id做成一颗项目树,但是科室的层次有很多,有点甚至到了六层,导致最终选择了优化后的递归算法. 如果在三层或者三层以下,可以考虑使用内部类,超过三层的话,最好就使用递归了,不过记得必须的优化. 2.java 后端代码 代
-
利用原生JS自动生成文章标题树的实例
实现原理很简单,就是循环文章模块,并抽取其中的h2.h3标签,将其中的内容赋予给新建的title树. 代码如下: HTML代码: <div class="contextBox"> <div id="article"> <h2>二级标题</h2> <h3>三级标题</h3> <p>hello hello hello hello hello hello hello hello hello
-
element-ui树形控件后台返回的数据+生成组织树的工具类
开发项目的时候遇到需要在表单中选择参会人员,根据不同部门下选择不同的人,在element-ui中有树形控件能满足这种情况,后台封装数据记录一下. 封装格式: 返回数据格式: 接收数据的pojo类: 2018年4月12日修改 本以为以上的数据结构能满足项目的使用,但是我错了,当时的数据库中只有不到10条的数据并且组织结构非常单一,随后同事导入了数据(6000多条),组织结构也不是如此单一的了,我在项目中固定了三层结构肯定是错的,要一个活的组织树. 网上有很多大牛写的方法,递归的.迭代的, 我在看了
-
JAVA递归生成树形菜单的实现过程
递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级子树并接上,直至为末端节点拼接上空的“树”. 首先,编写数据模型Menu.每条菜单有自己的id.父节点parentId.菜单名称text.菜单还拥有次级菜单children. import java.util.List; public class Menu { private String id;
-
ASP.NET C#生成下拉列表树实现代码
效果图: 代码: 复制代码 代码如下: using System.Data; using System.Web.UI.WebControls; /// <summary> /// 根据DataTable生成下拉列表树 /// </summary> public class DropDownListHelp { private string gridline; private DataTable dt; public DropDownListHelp() { // //TODO: 在
-
使用python生成目录树
这是一个使用Python生成文件.目录树的程序,其中遇到一个问题是:如何确定某个目录下的某一文件是最后一个遍历的文件.因为最后一个遍历的文件前应添加"└─",非最后一个文件前添加"├─".看了Python的API文档没有找到相关的系统函数.现在做法是:先统计出某个目录下的文件个数,在遍历目录时,当个数相等时,就可以确定该目录遍历结束. # encoding: utf-8 import os class dir(object): def __init__(self):
-
java利用递归实现类别树示例代码
在浏览淘宝,京东等各大商场的时候会发现首页一般都是商品分类,并且这个商品分类都是层级关系.下图以天猫商场为例,分为了三层的树状结构!!! 那么这种的类别树是怎么实现的呢?话不多说直接上代码: 1.首先我们新建一张商品类别表并维护所需数据: 2.创建商品类别实体 @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel("商品类别表") public class OrdersCategor
-
详解Element-ui NavMenu子菜单使用递归生成时使用报错
当采用递归方式生成导航栏的子菜单时,菜单可以正常生成,但是当鼠标hover时,会出现循环调用某个(mouseenter)事件,导致最后报错 处理方式 注:2.13.2 版本,只需对子菜单设置属性 :popper-append-to-body="false" 就不会出现这个问题了 报错信息如下: Uncaught RangeError: Maximum call stack size exceeded. at VueComponent.handleMouseenter (inde
-
Python递归生成全排列序列实操
目录 前言 代码 测试结果 前言 在生成数据的过程中,我们有时候需要基于已有的数据生成排列组合的序列,对此,我们需要编写全排列算法生成序列,本文将分享本人编写的递归实现的全排列算法,支持对任意类型的数据进行生成全排列序列(不局限于数字) 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. 全排列数: f(n)=n!(定义0!=1)f(n)=n!(定义0!=1) 递归实现方法: 要求长度为n的序列
随机推荐
- javascript 面向对象编程基础 多态
- 关于div自适应高度/左右高度自适应一致的js代码
- 微信公众号测试账号自定义菜单的实例代码
- c++利用stl set_difference对车辆进出区域进行判定
- Java编程cas操作全面解析
- IOS 开发自定义条形ProgressView的实例
- BootStrap的alert提示框的关闭后再显示怎么解决
- 谈谈js中的prototype及prototype属性解释和常用方法
- JavaScript获得url查询参数的方法
- asp知识整理笔记2(问答模式)
- 一份ASP内存的释放的实验报告
- Android中SQLite 使用方法详解
- jquery 回车事件实现代码
- AJAX开发简略 (第二部分)
- jquery控制listbox中项的移动并排序的实现代码
- Windows XP系统安全技巧
- Sax解析xml_动力节点Java学院整理
- Android利用SurfaceView实现下雨的天气动画效果
- PHP安装攻略:常见问题解答(三)
- Spring定时任务中@PostConstruct被多次执行异常的分析与解决