我的导航表看起来像这样。
它基于父< - >子计划。
我正在使用以下代码生成breadcrumb。
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
。如何解决这个问题?
答案 0 :(得分:3)
解决方案非常简单......您可以简单地将递归调用 放在 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";
}
但我勉强你不要对树中的每个节点进行查询。这可能是非常耗费资源的。