【问题标题】:Category>Sub category>Sub sub category>Sub sub subcategory>product 1分类>子类>子子类>子子类>产品1
【发布时间】:2014-09-10 11:30:32
【问题描述】:

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

我的类别表是: ID 类别名称 图片 父母

我的产品表是: ID 产品名称 类别

提前致谢

【问题讨论】:

标签: php mysql


【解决方案1】:

我假设,如果一个类别没有父级,那么它的父级在数据库中为 0。首先,我们获取产品名称、类别名称以及类别的父 ID。然后我们检查父 ID 是否为 0。如果不是,则查找其父 ID。它应该继续,直到父 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 - 姓名 - 类别 ID 类别表 - 类别 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;
}

它与上面的代码相同,但我认为它更容易。

【讨论】:

  • 你好@tibor b,我认为你的代码可以工作,但它没有,我的页面一直在加载,没有返回任何信息,你有什么选择吗?
  • 嗨。请给我一个产品表和类别表内容的例子好吗?
  • 哦,没关系。我在第 6 行有一个错误。现在修好了。查询末尾有一个额外的句点和双引号,这导致了问题。
  • 还是不行,我猜是因为while循环,比如说,我在“生物医学”类别下有“产品1”,“生物医学”是“医学”的子”和“医疗”是“设备”的子项,如何全部展现?非常感谢您的宝贵时间
  • “设备”的父 ID 是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2014-06-27
相关资源
最近更新 更多