作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开发自己的论坛大约一周了,我几乎完成了所有代码,但是,我陷入了一个我无法解决的问题。
嗯,简单地说我有子论坛,可以在任意数量的其他子论坛中。
我如何使用 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/
我是一名优秀的程序员,十分优秀!