逆转面包屑问题

时间:2011-09-24 16:19:55

标签: php mysql

我的导航表看起来像这样。 enter image description here

它基于父< - >子计划。

我正在使用以下代码生成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 。如何解决这个问题?

1 个答案:

答案 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";

    }

但我勉强你不要对树中的每个节点进行查询。这可能是非常耗费资源的。