PHP显示子类别中的产品。。。定制购物车

PHP显示子类别中的产品。。。定制购物车,php,sql,search,while-loop,Php,Sql,Search,While Loop,我正在做一辆购物车。我很难找到如何在多层次类别中加载产品,这些类别是我所看到的类别的子类别 例如: -汽车 斯巴鲁(内陆的传统)-霍尔顿(加来的准将)-丰田(卡罗拉,凯美瑞) 如果我正在查看汽车类别,我可以选择子类别,但我无法查看这些子类别中的实际产品。我有什么办法可以做到这一点吗?即使你可以有无限级别的类别,如“根>汽车>轿车>斯巴鲁…” 每个产品都有一个与类别相关的类别ID。每个类别都有其唯一的ID和一个“父”ID,该ID具有其子类别的ID。我认为您需要做的是建立一个类别ID列表,然后为s

我正在做一辆购物车。我很难找到如何在多层次类别中加载产品,这些类别是我所看到的类别的子类别

例如: -汽车 斯巴鲁(内陆的传统)-霍尔顿(加来的准将)-丰田(卡罗拉,凯美瑞)

如果我正在查看汽车类别,我可以选择子类别,但我无法查看这些子类别中的实际产品。我有什么办法可以做到这一点吗?即使你可以有无限级别的类别,如“根>汽车>轿车>斯巴鲁…”



每个产品都有一个与类别相关的类别ID。每个类别都有其唯一的ID和一个“父”ID,该ID具有其子类别的ID。

我认为您需要做的是建立一个类别ID列表,然后为sql构建一个
IN
子句。假设您具有以下类别结构:

  • 汽车(识别号:1)
    • 丰田(id:2,母公司:1)
      • 迷你型(id:3,父级:2)
      • 花冠(id:4,亲本:3)
    • 霍尔顿(身份证号码:5,父母:1)
      • 体育(id:6,家长:5)
      • HSV(id:7,父母:6)
要获取一个类别的所有子类,您需要使用如下内容循环父/子结构:

/** 
  * I'm only writing pseudocode here btw; I haven't tested it.
  * Obviously you'll need to fire the SQL commands...
  */
function getKids ($id, $found = array()) 
{
  array_push ($found, $id);
  $nbrKids = "select count(id) from category where parent_id = $id";
  if ($nbrKids > 0) {
    $newKids = "select id from category where parent_id = $id";
    foreach ($newKids as $kid) {
      return getKids ($kid, $found);
    }
  }
  else {
    return $found;
  }
}
然后像这样调用
getKids()
,其中
$id
是您的类别id:

$ids = getKids($id);
$ids
是您感兴趣的所有类别的数组。然后可以使用
join()
构造SQL字符串:

$sql = "select * from cars where category_id in (" . join (",", $ids) . ")";
为了确保正确性,您应该首先检查
$ids
是否至少有一个成员,否则您的SQL查询将无效


[编辑:实际上在上面的代码中,
$id
将始终至少有一个成员:初始id。但是,代码不会验证初始id是否为有效的类别id。]

表结构和关系可能会有所帮助非常感谢:)太好了。。。我要试一试!