gpt4 book ai didi

php - 电子商务网站上的嵌套模型菜单

转载 作者:行者123 更新时间:2023-11-29 02:05:18 26 4
gpt4 key购买 nike

我有一个带有类别表的数据库,使用 MySql 中的嵌套方法。但我一直在碰壁。该站点包含“部分”物种(因为这是一家宠物店)。我已经有一个查询返回每个物种中包含产品的所有类别。

现在我的问题是我希望能够只显示其下有产品的类别。例如,如果我创建类别 food 和一个 child adult。那么系统不应该列出任何物种下的类别。但是,只要我在 adult 类别下创建 Product ,系统就会列出 Food 和子 Adult

该表目前的结构如下:

类别:

  • 编号
  • 姓名
  • 离开
  • 创建(为了完整性)
  • 最后更新(为了完整起见)

因此,我能够从表中为每个物种构建一棵完整的树,但我需要的类别只有在它们包含该物种的产品时才可见。

听起来很简单,但出于某种原因我无法理解这个问题。有帮助吗?解决这个问题的最佳方法是什么?

更新:

我用来获取类别的查询:

SELECT node.id as nid, node.top as top, node.*, brands.name as brandname from
brands, foods, foodcategories, categories as node, categories as parent WHERE
node.lft BETWEEN parent.lft AND parent.rgt AND parent.top=1 AND
foodcategories.food=foods.id AND foodcategories.category=node.id
AND brands.id=foods.brand AND foods.species={speciesid}

然后我执行查询以获取所有类别及其 lft、rgt。我可以从中构建树。

最佳答案

像这样的东西应该可以工作:

$q = mysql_query("SELECT a.* FROM Categories a WHERE a.id IN (SELECT categoryID FROM Products)");

$q = mysql_query("SELECT a.* FROM Categories a WHERE (SELECT count(*) FROM Products WHERE categoryID = a.id) >= 1");  

您将需要匹配您的字段并编写要输出的其余代码,但这应该可以帮助您入门。您还需要更改 a.* 以列出所有用于更好优化的字段。

编辑:

我明白你想完成什么,但仍然不明白你的数据库结构。对于 1 级子类别,我会做类似的事情:

echo '<ul>';
$q = mysql_query("SELECT a.* FROM Categories a, SubCategories b WHERE a.ID = b.categoryID AND (SELECT count(*) FROM Products WHERE SubCategoryID = b.id) >= 1");
while($f = mysql_fetch_array($q)) {
echo '<li>'.$f['Category'];
$qsc = mysql_query("SELECT b.* FROM SubCategories b WHERE (SELECT count(*) FROM Products WHERE SubCategoryID = b.id) >= 1");
if (mysql_num_rows($qsc) > 0) {
echo '<ul>';
}
while($fsc = mysql_fetch_array($fsc)) {
echo '<li>'.$fsc['SubCategory'].'</li>';
}
if (mysql_num_rows($qsc) > 0) {
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';

你可以接受它并适应你的代码,或者如果你对你的数据库结构多解释一点,我可以提供进一步的帮助。

关于php - 电子商务网站上的嵌套模型菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com