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)
- 丰田(id:2,母公司:1)
/**
* 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。]表结构和关系可能会有所帮助非常感谢:)太好了。。。我要试一试!