我正在努力解决这个问题。
目前正致力于在我的opencart网站上创建产品和类别的slugs的脚本。我在产品本身之前有一个最大的4升深度结构。
每个产品都存储一个包含类别的数组。客户端以一种我并不总是具有相同情况的方式插入产品。有时它只是最深的(lvl 4)类别,有时它是从4 lvl结构到顶部的所有类别。这是有效的,因为我有opencart来显示父类别中的所有产品。
所以我正在编写一个脚本,在一个给定的类别ID上收集所有类别名称。它必须寻找可能的父母和可能的孩子。
这不知道如何导致我满意的结果。但我发现我几乎处于理想的状态。虽然我的代码是一个像我以前从未见过的混乱。
所以..类别表包含类别ID和他的父ID。没有父亲时,父id = 0 类别名称存储在另一个包含id和name的表中。
每个产品行都包含一组类别ID,我得到一个。
我确信我做错了,因为它们必须是一种检查所有子类和父类的方法,并通过一些嵌套循环获取它们的名称,这些循环只是我在这里的代码的一小部分......
$products = $db->query("SELECT * FROM ".DB_PREFIX."product");
$products = $products->rows;
foreach ($products as $product) {
$url = $db->query("SELECT * FROM ".DB_PREFIX."url_alias WHERE query='product_id=".$product['product_id']."' LIMIT 1");
$url = $url->rows;
$url = $url[0];
$info = $db->query("SELECT * FROM ".DB_PREFIX."product_description WHERE product_id='".$product['product_id']."' LIMIT 1");
$info = $info->rows;
$info = $info[0];
$categories = $db->query("SELECT `bnc_category_description`.`name` , bnc_category_description.category_id FROM `bnc_product_to_category` JOIN `bnc_category_description` ON `bnc_product_to_category`.`category_id` = `bnc_category_description`.`category_id` WHERE `bnc_product_to_category`.`product_id` ='".$product['product_id']."' LIMIT 1");
$categories = $categories->rows;
$categories = $categories[0];
//$i = 1;
$parent = $db->query("SELECT category_id, parent_id FROM bnc_category WHERE category_id ='" . $categories['category_id'] . "'");
$parent = $parent->rows;
$parent = $parent[0];
$link = $parent['category_id'] . "_";
$n = $parent['category_id'];
$pr = $parent['parent_id'];
$y = $db->query("SELECT category_id, parent_id FROM bnc_category WHERE parent_id ='" . $parent['category_id'] . "'");
$y = $y->rows;
$y = $y[0];
$x = $db->query("SELECT name FROM bnc_category_description WHERE category_id = '" . $y['category_id'] . "'");
$x = $x->rows;
$x = $x[0];
$final = $x['name'] . "_";
while($pr != 0){
$s = $db->query("SELECT category_id, parent_id FROM bnc_category WHERE category_id ='" . $pr . "'");
$s = $s->rows;
$s = $s[0];
$pr = $s['parent_id'];
$n = $s['category_id'];
$link .= $n . "_";
}
$name = $db->query("SELECT name FROM bnc_category_description WHERE category_id = '" . $test['category_id'] . "'");
$name = $name->rows;
$name = $name[0];
$test = $db->query("SELECT category_id FROM bnc_category WHERE parent_id='" . $n . "'");
$test = $test->rows;
$test = $test[0];
$final .= $categories['name'] . "_" . $name['name'];