我已经开发了自己的论坛大约一个星期了,我差不多已经完成了所有的代码,但是,我遇到了一个我无法弄清楚的问题。
嗯,简单地说我的子论坛可以在任何其他子论坛中。
如何使用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);
答案 0 :(得分:1)
首先,您需要一个终止条件。因此,将您的顶级论坛[link]设置为null,或“top”或其他内容。然后它只是使用递归函数将你的面包屑放在一起。
所以我们假设您想要向Forum-One展示面包屑:论坛 - 三:论坛 - 六,更好地称为论坛 - 六。
示例代码:
<?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);