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

时间:2011-08-25 13:28:38

标签: php mysql recursion categories breadcrumbs

这是我的代码:

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属于该项目。

例如:制造商:宝马&gt;意甲:3&gt;型号:320&gt;年:2009

现在我的代码只适用于最深的cateyory [Year]。如果我上升到一个级别,我会得到这个:

意甲:宝马&gt;型号:3&gt;年份:320

1 个答案:

答案 0 :(得分:1)

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

此外,您应该删除,因为您始终只能获得一条记录。 而不是你应该使用简单的$ row = mysql_fetch_array($ res);