我的导航表看起来像这样。
它基于父<->子方案。
我正在使用以下代码生成面包屑。
function makeBreadcrumb($current, $lang, $db){
$q = $db->query("SELECT id, parent, $lang AS name FROM nav WHERE id = '$current'");
$row=$q->fetch_object();
echo "<li>";
echo '<a href="?id=' . $row->id . '">' . $row->name . '</a>';
echo "</li>\n\n";
if($row->parent) makeBreadcrumb($row->parent, $lang, $db);
}
但是得到反向面包屑:它显示 child>parent
而不是 parent>child
.如何解决?
最佳答案
解决方案非常简单...您可以简单地将递归调用放在 echo
语句之前,如下所示:
function makeBreadcrumb($current, $lang, $db){
$q = $db->query("SELECT id, parent, $lang AS name FROM nav WHERE id = '$current'");
$row=$q->fetch_object();
if($row->parent) makeBreadcrumb($row->parent, $lang, $db);
echo "<li>";
echo '<a href="?id=' . $row->id . '">' . $row->name . '</a>';
echo "</li>\n\n";
}
但我建议您不要对树中的每个节点进行查询。它可能非常耗费资源。
关于php - 反向面包屑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540212/