当前位置:首页 > PHP教程 > php应用 > 列表

PHP使用递归生成文章树

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 21:27:28 浏览: 评论:0 

写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.大概步骤如下:首先到数据库取数据,放到一个数组,然后把数据转化为一个树型状的数组,最后把这个树型状的数组转为html代码,下面我们来看个实例。

因为自己的一个技术站,以文章为主,文章有些是一个系列的,所以想把这些文章归类,同一类的在一个下面。

数据库好设计,无非用id,fatherid来进行归类,fatherid代表父类是那篇文章的id,id是文章的唯一id,层次不限,可以是两层,可以是三层。fatherid为0的表示顶层文章。

php代码,主要是递归:

  1. function category_tree($fatherid){ 
  2.   //require_once("mysql_class/config.inc.php"); 
  3.   //require_once("mysql_class/Database.class.php"); 
  4.   $db = new Database(DB_SERVER, DB_USER, DB_PASS, DB_DATABASE); 
  5.   $db->connect(); 
  6.   $sql = "SELECT id,title,url FROM ".TABLE_TASK."  
  7.      WHERE fatherid=$fatherid and ispublic=1 order by id asc"; 
  8.   $articles = $db->query($sql); 
  9.   $db->close(); 
  10.   while ($record = $db->fetch_array($articles)){ 
  11.     $i = 0; 
  12.     if ($i == 0){ 
  13.       if($fatherid==0){ 
  14.         echo '<ul class="article-list-no-style border-bottom">'
  15.       }else
  16.         echo '<ul class="article-list-no-style">'
  17.       } 
  18.         
  19.     } 
  20.     if($fatherid==0){ 
  21.       echo '<li><span class="glyphicon glyphicon-log-in" 
  22.       aria-hidden="true" id="han'.$record['id'].'"
  23.       </span>&nbsp;&nbsp;<a href="'.$record['url'].'" target="_blank">'  
  24.       . $record['title'].'</a>'
  25.     }else
  26.       echo '<li><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"
  27.       </span>&nbsp;<a href="'.$record['url'].'" target="_blank">'  
  28.       . $record['title'].'</a>'
  29.     } 
  30.       
  31.     category_tree($record['id']); 
  32.     echo '</li>'
  33.     $i++; 
  34.     if ($i > 0){ 
  35.       echo '</ul>'
  36.     } 
  37.   } 

调用:category_tree(0) //先提取最顶层文章

Tags: PHP递归生成文章树

分享到: