PHP子论坛内子论坛的树形遍历

标签 php mysql database dynamic tree

我已经开发自己的论坛大约一周了,我几乎完成了所有代码,但是,我陷入了一个我无法解决的问题。

嗯,简单地说我有子论坛,可以在任意数量的其他子论坛中。

我如何使用 PHP 动态创建到任何这些子论坛的路径。

创建路径后,我将在 href 和其他内容中使用它。

我猜想我需要根据 ID 列和另一列来遍历数据库,该列将一个子论坛链接到另一个子论坛。

假设我的数据库表如下所示:

ID | Name        | Link |
---+-------------+-------
1  | Forum-One   | Top  |
2  | Forum-Two   | 1    |
3  | Forum-Three | 2    |
4  | Forum-Four  | 2    | 
5  | Forum-Five  | 3    |
6  | Forum-Six   | 3    |

我将如何去做这件事 - 或者还有其他必须做的事情吗?

我希望我说得足够清楚,让每个人都能理解。

编辑:

 include("inc/config.php");

 function generateBreadcrumb($startingID){

  $result = mysql_query("SELECT * FROM temp_table WHERE ID='$startingID'");

  while($row = mysql_fetch_array($result))
  {
    $db_id=$row['ID'];
    $db_name=$row['Name'];
  }

     if($db_id!='Top'){
         return generateBreadCrumb($db_id);
     } else {
         return $db_name;
     }
 }

 $startID='6';
 echo generateBreadcrumb($startID);

最佳答案

首先您需要一个终止条件。因此,将您的顶级论坛[链接]设置为空,或“顶部”,或其他。然后,只需使用递归函数将面包屑放在一起即可。

因此,假设您想要将面包屑显示到 Forum-One:Forum-Three:Forum-Six(更广为人知的名称为 Forum-Six)。

示例代码:

 <?php
 $yourForumId = 6; // replace this dynamically with your forum;
 $breadcrumb = generateBreadcrumb($yourForum);
 function generateBreadcrumb($startingForumId){
     $sql= "SELECT Name ,link FROM Forums WHERE ID = ".$startingForumId;
     //run your $sql however you do to get results
     //assuming you get associative arrays back
     if($res['link'] != 'top'){
         return generateBreadCrumb($res['link']).":".$res['Name'];
     } else {
         return $res['Name'];
     }
 }
 echo $breadcrumb;
 ?>

这是递归,如果您是新手,这可能看起来很复杂,但我希望有所帮助!

编辑:这是您的代码以及所需的编辑...

include("inc/config.php");

 function generateBreadcrumb($startingID){

     $result = mysql_query("SELECT * FROM temp_table WHERE ID='$startingID'");

     $row = mysql_fetch_array($result);
     $db_id=$row['link'];
     $db_name=$row['Name'];

     if($db_id!='Top'){
         return generateBreadCrumb($db_id).":".$db_name;
     } else {
         return $db_name;
     }
 }

 $startID='6';
 echo generateBreadcrumb($startID);

关于PHP子论坛内子论坛的树形遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766010/

相关文章:

php - UPDATE 查询更新之前设置的所有 TIMEDATE 列

database - 我应该使用哪个插件进行 hibernate4 的数据库迁移?

mysql - 哪种 MySQL 数据类型用于调度?

javascript - 存储一个 php 数组客户端

php - 如何使用 php 创建多图像拼贴画?

MYSQL/PHP批量更新

php - mysql where子句中的未知列

php - 查询数据库中的重复条目

php访问远程数据库

database - 交响乐 2 : Build own DB access layer