簡體   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