gpt4 book ai didi

php - PHP 列出类别和子类别的逻辑

转载 作者:行者123 更新时间:2023-11-29 13:55:19 25 4
gpt4 key购买 nike

我有一个表,其中包含或多或少的博客文章。结构如下:

  1. id INT 主键自动递增
  2. 用户 VARCHAR
  3. 标题 VARCHAR
  4. 类别 VARCHAR
  5. VARCHAR 部分
  6. post_body 文本
  7. post_date DATETIME

部分字段基本上是一个子类别。我有第二个部分表:

  1. id INT 主键自动递增
  2. section_name VARCHAR
  3. 类别 VARCHAR

我一直在尝试做的是在页面上创建一个列表,其结构如下:

科学(这是类别)

地质学(这是第一部分)

标题1

标题2

标题3

等等

生物学(第二部分)

标题1

标题2

标题3

等等

等等所有科学类别的部分

当用户点击查看科学类别中的文章时,他们会登陆此页面。

我尝试了很多方法来实现这一目标,但没有成功。获取要显示的部分名称很容易,但是根据从第一个查询检索到的部分对所有文章标题进行查询是我陷入困境的地方,所以这是我到目前为止的代码:

if(isset($_GET['cat'])){
$cat = preg_replace('#[^a-z0-9_]#i','',$_GET['cat']);
$cat = str_replace('_',' ',$_GET['cat']);
$stmt = $db->prepare("SELECT section_name FROM sections WHERE category=:cat GROUP BY section_name");
$stmt->bindValue(':cat',$cat,PDO::PARAM_STR);
try{
$stmt->execute();
}
catch(PDOException $e){
echo $e->getMessage();
$db = null;
exit();
}
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$sectionName = $row[section_name];
}
}

最佳答案

我建议您扩大查询范围,用其部分标记每个标题,然后仅循环标题(表明您何时有部分更改)。

$stmt = $db->prepare("SELECT section_name FROM sections t1, title FROM posts t2  WHERE t1.category=:cat AND t1.section_name = t2.section GROUP BY section_name");

现在您已经有了要显示的标题列表,请循环遍历它们:

$currentSection = null;
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$sectionName = $row[section_name];
if ($sectionName != $currentSection) {
echo "<h2>".$sectionName."</h2>";
$currentSection = $sectionName;
}
echo "<p>".$row['title']."</p>";
}

您还可以创建一个数组,其中节名称作为键,标题作为嵌套数组的成员。当然,它可能会变得更加复杂,但我希望这能让您很好地了解从哪里开始。

关于php - PHP 列出类别和子类别的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960362/

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