繁体   English   中英

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

[英]PHP Show Products within the child categories… custom shopping cart

我有一个正在做的购物车。 我很困惑,无法找到如何在属于我所关注类别的多级类别中加载产品。

例如:-汽车Subarus(传统,内陆地区)-Holden(科莫多,加来)-Toyota(花冠,凯美瑞)

如果我在“汽车”类别中查找,可以选择子类别,但无法查看这些子类别中的实际产品。 有什么办法可以做到吗? 即使您可以拥有无​​限级别的类别,例如“ ROOT> Cars> Sedan> Subaru's ...”?


每个产品都有一个与类别相关的类别ID。 每个类别都有其唯一的ID和一个“父代” ID,该“父代” ID为其所属的类别的ID。

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

  • 汽车(id:1)
    • 丰田(ID:2,父母:1)
      • 迷你(ID:3,父母:2)
      • 花冠(id:4,父母:3)
    • 霍尔顿(ID: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至少具有1个成员,否则您的SQL查询将无效。

[编辑:实际上,在上面的代码中, $ids将始终至少有一个成员:初始ID。 但是,该代码无法验证初始ID是有效的category_id。 ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM