【问题标题】:Dynamic navigation from database来自数据库的动态导航
【发布时间】:2013-07-23 15:39:00
【问题描述】:

我的数据库中有 2 个表。一种用于产品类别,一种用于子类别。

子类别表有一个字段保存其父类别 ID

现在我尝试使用此信息创建导航,但我正在努力仅从数据库中获取具有子类别的类别。

表“类别”:

猫ID |猫名 |活跃 |图片

表“子类别”:

猫ID |猫名 |父猫ID |活跃 |图片

到目前为止,我已经尝试过:

$sql = mysqli_query($con,'SELECT DISTINCT parentCatID FROM *****');
while($row = $sql->fetch_row()) {
  $rows[]=$row;
}                   
$res = join(',',$rows);
$sql2 = mysqli_query($con,"SELECT * FROM ***** WHERE categoryID IN '" . $res . "'");
while($results2 = mysqli_fetch_array($sql2)){
    echo $results2['categoryName'];
}

这不起作用,我看不到解决方案。 只需选择所有类别就很容易了。但我不想要那些没有子类别的人

【问题讨论】:

  • 编辑您的问题以包含您正在讨论的表的架构,以便潜在的回答者能够看到我们正在处理的内容。
  • 确定编辑问题以显示表格字段

标签: php mysql navigation


【解决方案1】:

我会使用 INNER JOIN

SELECT *
FROM Categories
    INNER JOIN subCategories ON subCategories.parentCatID = Categories.catID AND subCategories.active = 1
WHERE Categories.active = 1
GROUP BY Categories.catID

编辑以反映您的结构,您需要根据您的设置方式更新“active = 1”

【讨论】:

  • 我现在正在尝试这个解决方案,但必须让你知道我早上过得怎么样 :( 非常感谢你的意见
  • 谢谢你我今天早上试过了,让它工作了:)它做了我需要的,再次感谢。我发现这个解决方案比 Styphon 的更容易,所以我会接受这个答案
【解决方案2】:

以下查询应选择所有只有子类别的主要类别:

SELECT *, (SELECT count(*) FROM subCategories WHERE parentCatID = Categories.catID) as num FROM Categories WHERE num > 0

因为你没有给我们表格或列名,所以我已经做了它们。替换为您的实际表名和列名。

EDIT在表/列名称中添加了现在可用的架构。

【讨论】:

  • 感谢您的意见。我使用了您的 SQL 语句并在其后添加了以下行: while ($row = mysqli_fetch_array($sql)) {echo $row['catID'];} 但我什么也没得到:/
  • 尝试var_dump($row);,应该会输出 $row 中的所有内容。另一件事是打开 PHPMyAdmin 并在那里运行查询,看看它是否给你任何结果或错误。
  • var_dump 不产生任何结果,并且在 phpMyAdmin 中运行查询也不会产生任何结果。没有错误但也没有结果
  • 不知道为什么这对你不起作用,但我很高兴其他答案对你有用。
猜你喜欢
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2018-04-18
相关资源
最近更新 更多