gpt4 book ai didi

php - 如何过滤多个类别并显示它的帖子/文章 PHP

转载 作者:行者123 更新时间:2023-11-29 06:36:19 28 4
gpt4 key购买 nike

我创建了一个页面,该页面显示了单个 类别下的所有帖子,即如果我单击类别音乐,我将获得与音乐类别相关的所有文章。

但我的目标是创建一个过滤选项,它可以过滤掉某些类别,并且只显示与您过滤的类别相关的所有帖子,即我将有一堆类别后面有复选框,如果我检查音乐和游戏并提交表格我想查看音乐和游戏下的所有帖子。

这是我用来显示 1 个类别下的所有帖子的代码。

<?php require('includes/config.php'); 

$catID = ($_GET['id']);
$catName = ($_GET ['cat']);



?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>XS</title>
<link rel="stylesheet" href="style/normalize.css">
<link rel="stylesheet" href="style/main.css">
</head>
<body>

<div id="wrapper">

<h1>XS <span style="color:blue;"> >> </span> <span><?php echo $catName); ?></span> </h1>

<hr />

<div class="grid">

<?php
try {
$stmt = "SELECT * FROM blog_posts NATURAL JOIN blog_posts_categories WHERE catID = $catID";

$query = $db->prepare($stmt);
$query->execute();

$numrows = $query->rowCount();
if($numrows > 0){

while($row = $query->fetch()){
echo '<ol class="thumb-grid group">';
echo '<li>';
echo '<a href="viewpost.php?id='.$row['postID'].'">';
echo '<img src="scripts/t.php?src='.$row['postImage'].'&w=236&h=236&q=95" alt="'.$row['postTitle'].'" title="'.$row['postTitle'].'" />';
echo '</a>';
echo '</li>';
echo '</ol>';
}

}

} catch(PDOException $e) {
echo $e->getMessage();
}
?>


</div>

</div>


</body>
</html>

所以我从表单开始,但它不是很好,因为它只发送类别名称而不是相应的类别 ID。

<form action="c.php" method="get">
<fieldset>
<legend>Filter Categories</legend>
<p>
<label><input type="checkbox" name="cat[]" value="Music"/> Music</label>
<label><input type="checkbox" name="cat[]" value="Games"/> Games</label>
<label><input type="checkbox" name="cat[]" value="Tech"/> Tech</label>
</p>
</fieldset>
<button type="submit">Filter</button>
<button type="reset">Reset</button>
</form>

这是我的数据库结构:

blog_posts表格

postID int, primary, auto increment.

postTitle varchar

postCont text

blog_categories 表格

catID int, primary, auto increment.

catName varchar

blog_posts_categories

postID int

catID int


数据库内容:

博客帖子

postID  |  postTitle  | postCont

1 Post1 Cont1
2 Post2 Cont2
3 Post3 Cont3
4 Post4 Cont4
5 Post5 Cont5

博客类别

catID   |   catName

1 Music
2 Games
3 Technology

blog_posts_categories

postID  |  catID

1 1
1 2
1 3
2 2
3 3
4 1
4 2
5 2
5 3

最佳答案

表单内容

将您的复选框值替换为实际的类别 ID,并将类别名称放在标签内部文本内容中:

<input type="checkbox" name="cat[]" value="<?php echo $row['catID'];?>"/><?php echo $row['catName'];?></input>

您可以从数据库(blog_categories 表)中获取该数据,并对结果集的行执行一个简单的循环。

表格展示

现在您应该在 $_GET["cat"] 中获得所有选定类别 ID 的数组;您只需要用逗号作为分隔符将其分解,并将其放入您的查询中,将 WHERE catID = $catID" 替换为 WHERE catID IN ($catID)"。不要忘记先清理您的请求数据(通过检查值是否为整数)。

最后,您可能希望通过在额外的列中添加帖子所属的类别来更新表格显示,或者按类别对数据进行排序,并为每个类别创建子表。这留作练习。

关于php - 如何过滤多个类别并显示它的帖子/文章 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24469998/

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