首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子论坛内子论坛的PHP树遍历

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

Stack Overflow用户
提问于 2011-01-22 11:37:19
回答 1查看 425关注 0票数 0

我已经开发我自己的论坛大约一周了,我几乎完成了所有的代码,然而,我被一个问题卡住了,我还没有弄清楚。

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

我如何用PHP在现场动态地创建到这些子论坛的路径。

在创建路径之后,我将在href和其他东西中使用它。

我猜我会以某种方式需要遍历数据库的ID栏和另一个栏目,将链接一个子论坛到另一个子论坛。

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

代码语言:javascript
复制
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    |

我该如何着手做这件事--或者有没有其他必须要做的事情?

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

编辑:

代码语言:javascript
复制
 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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-22 11:58:27

首先,您需要一个终止条件。因此,将顶层Forumlink设置为null、' top‘或其他值。然后,这只是一个简单的问题,使用递归函数将您的面包屑放在一起。

因此,假设您想要显示指向Forum-One:Forum-Three:Forum-Six的面包屑,也就是更为人熟知的Forum-Six。

示例代码:

代码语言:javascript
复制
 <?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;
 ?>

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

编辑:这是包含所需编辑的代码...

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4766010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档