分类>子分类>子分类>


Category>Sub category>Sub sub category>Sub sub subcategory>product 1

我在产品类别和子类别网站上工作,可以创建的子类别数量是无限的,这意味着我们可以拥有子类别的子类别。一切都很好,我只是有一个问题:假设"PRODUCT 1"属于"SUB SUB CATEGORY 1","SUB SUB CATEGORY 1"是"SUB CATEGORY 1"的子类别,而"SUB SUB CATEGORY 1"是"CATEGORY 1"的子类别,如何在"PRODUCT 1"页面的顶部显示以下内容:分类1>子分类1>子分类1>产品1

我的分类表是:idnameofcategory图像父母

我的产品表是:idnameofproduct类别

Thanks in advance

我假设,如果一个类别没有父类,那么它的父类在数据库中为0。首先,我们获得产品名称、类别名称和类别的父ID。然后检查父ID是否为0。如果不是,我们就找它的父结点。它应该继续,直到父ID变为0。所以,这个应该可以做到:

$query = mysql_query("SELECT c.parent Parent, p.nameofproduct ProductName, c.nameofcategory CategoryName FROM product p INNER JOIN category c ON p.category = c.id WHERE p.id = " . $your_product_id . " LIMIT 1");
$result = mysql_fetch_array($query);
$parent = $result['Parent'];
$product_path = $result['CategoryName'] . ">" . $result['ProductName'];
while ($parent != 0) {
  $parent_query = mysql_query("SELECT parent, nameofcategory FROM category WHERE id = " . $parent);
  $parent_result = mysql_fetch_array($parent_query);
  $parent = $parent_result['parent'];
  $product_path = $parent_result['nameofcategory'] . ">" . $product_path;
}

编辑:另外,我建议您将列名更改为如下内容:

产品表——product_id——名字——category_id添加分类表——category_id添加——名字——图片——parent_id

这将使两个表之间的链接更加明显。它将使构造INNER JOIN查询更容易和更明显。

在本例中,代码是这样的:

$query = mysql_query("SELECT c.parent_id Parent, p.name ProductName, c.name CategoryName FROM product p INNER JOIN category c ON p.category_id = c.category_id WHERE p.product_id = " . $your_product_id . " LIMIT 1");
$result = mysql_fetch_array($query);
$parent = $result['Parent'];
$product_path = $result['CategoryName'] . ">" . $result['ProductName'];
while ($parent != 0) {
  $parent_query = mysql_query("SELECT parent_id, name FROM category WHERE category_id = " . $parent);
  $parent_result = mysql_fetch_array($parent_query);
  $parent = $parent_result['parent_id'];
  $product_path = $parent_result['name'] . ">" . $product_path;
}

它的功能与上面的代码相同,但在我看来它更简单。