来自 MySQL 的 php 递归面包屑,带有类别名称

发布于 2024-12-01 12:34:33 字数 811 浏览 1 评论 0原文

这是我的代码:

function printBreadCrumb($id,$level=0) {

    $levelNames=array('Year','Model','Serie','Maker');
    $query = "SELECT * FROM category  WHERE del=0 AND id=".$id." LIMIT 0,1";
    $res = mysql_query($query) or die($query);
    while ($row = mysql_fetch_array($res)) {

      $link = "<a href=\"index.php?parent_id=".$row['parent_id'].
              "\">".$levelNames[$level].":".$row['name']."</a>";

      $bc .= $level==0 ? $link : $link . ' > '  ;
      $parent_id = $row['parent_id'];

      printBreadCrumb($parent_id,$level+1);
    }
    echo $bc."";   
  }

该函数工作正常,我可以看到正确的类别名称。
我想要的:显示该项目属于哪个levelName。

例如:制造商:BMW >系列:3>型号:320>>年份:2009

现在我的代码只能在最深的类别[年份]中运行。如果我上升一级,我会得到:

Serie:BMW >型号:3>年份:320

Here is my code:

function printBreadCrumb($id,$level=0) {

    $levelNames=array('Year','Model','Serie','Maker');
    $query = "SELECT * FROM category  WHERE del=0 AND id=".$id." LIMIT 0,1";
    $res = mysql_query($query) or die($query);
    while ($row = mysql_fetch_array($res)) {

      $link = "<a href=\"index.php?parent_id=".$row['parent_id'].
              "\">".$levelNames[$level].":".$row['name']."</a>";

      $bc .= $level==0 ? $link : $link . ' > '  ;
      $parent_id = $row['parent_id'];

      printBreadCrumb($parent_id,$level+1);
    }
    echo $bc."";   
  }

The function works fine and I can see the correct category names.
What I want: show into which levelName belongs the item.

eg.: Maker:BMW > Serie:3 > Model:320 > Year:2009

Now my code only works in the deepest cateyory [Year]. If I go up one level I get this:

Serie:BMW > Model:3 > Year:320

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

哑剧 2024-12-08 12:34:33

我认为问题出在你第一次传递给函数的级别参数中,因为代码很好。您应该检查您的函数调用。也许你总是用 $level=0 来调用。

另外你应该删除 while 因为你总是只得到一条记录。
而不是 while 你应该使用简单的 $row = mysql_fetch_array($res);

I think the problem in your level param which you pass into function the first time because the code is fine. You should check you function calling. Maybe you always call with $level=0.

Also you should remove while because you always get only one record.
Instead of while you should use simple $row = mysql_fetch_array($res);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文