php和mysql动态面包屑

时间:2014-11-18 13:13:40

标签: php mysql breadcrumbs

我有一个列出所有食物来源的网站;在我的数据库中,我创建了一个名为[foods]

的MySQL表

food table

在我的页面中,当用户点击该类别时,他会获得所有孩子的列表。在我的情况下

food
 -- Plants
 ---- Vegetable
 ------ Aubergine
 ------ Broad_bean
 ------ Broccoli
 ------ Carrot
 ---- Fruits
 ------ Apple
 ------ Apricot
 ------ Banana
 ------ Cherry
 ------ Clementine
 ------ Guava
 -- Animals

现在,我想在页面顶部制作动态面包屑导航,例如

Food > Plants > Fruits > Banana

因此用户可以浏览它们。

我已经尝试过多次查询但没有运气。

每次我只获得该类别的第一个父母

因此,如果我在Banana页面中,我只会获得Fruits类别,而不会更深入。

我知道我必须使用while循环where cat_parent_id != 0,但我无法弄清楚如何以正确的方式实现它!

这是我尝试过的代码段

$cat_parent_id = $_REQUEST['cat_id'];

$q = mysqli_query($link, "SELECT * FROM foods WHERE cat_id = $cat_parent_id");
while($r = mysqli_fetch_assoc($q))
{
  echo $name = $r['cat_name'];
}

我非常感谢你在这方面的帮助

提前致谢...

1 个答案:

答案 0 :(得分:-1)

你必须使用递归函数。意思是检查

代表:

function show_breadcumb($cat_id)
{   
  $q = mysqli_query($link, "SELECT * FROM foods WHERE cat_id = $cat_id");
  while($r = mysqli_fetch_assoc($q))
  {
     $name = $r['cat_name'];
     $string.= $name .">".$string
  }
  //check if this category has any parent again call this fucntion
  if( has parent  ) { show_breadcumb($cat_id) }
  else return $string;
}

表示你的ur循环应该继续查找类别到第一级。