我使用产品处理类别和子类别网站,并且可以创建的子类别数量是无限的,这意味着我们可以自己拥有子类别的子类别。 一切都很好,我只是有一个问题: 让我们假设"产品1"属于" SUB SUB CATEGORY 1"和" SUB SUB CATEGORY 1"是" SUB CATEGORY 1"的子类别。而后者是" CATEGORY 1"的子类别,如何在页面顶部显示以下内容"产品1": 类别1>子类别1>子子类别1>产品1
我的类别表是: ID nameofcategory 图片 父
我的产品表是: ID nameofproduct 类
提前致谢
答案 0 :(得分:1)
我假设,如果某个类别没有父级,则其父级在数据库中为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;
}
它与上面的代码相同,但在我看来它更容易。