如何为<a href>标签添加GET请求?实现博客分类筛选功能
解决点击分类发送GET请求排序博客文章的问题
我来帮你搞定这个分类筛选的问题!其实实现点击分类发送GET请求重新排列文章并不复杂,大概率是之前的实现细节没处理对,给你两种靠谱的方案,你可以试试:
方案1:用a标签直接发送GET请求(最简单)
这是最直接的方式,每个分类项做成带参数的链接,点击后浏览器会自动发送GET请求到当前页面,后端拿到参数后筛选对应分类的文章就行。
前端代码(PHP循环生成分类链接)
<?php if ($numOfRowsCategories > 0): ?> <div class="category-nav"> <!-- 可以加一个"全部"选项,点击显示所有文章 --> <a href="?" class="category-link">全部文章</a> <?php foreach ($categories as $category): ?> <a href="?category=<?php echo $category['id']; ?>" class="category-link"> <?php echo htmlspecialchars($category['name']); ?> </a> <?php endforeach; ?> </div> <?php endif; ?>
后端处理逻辑(PHP示例)
拿到GET参数后,根据参数筛选文章:
// 先获取选中的分类ID,默认0表示显示所有文章 $selectedCategory = isset($_GET['category']) ? intval($_GET['category']) : 0; // 用PDO预处理语句查询,防止SQL注入 if ($selectedCategory > 0) { $stmt = $pdo->prepare("SELECT * FROM posts WHERE category_id = ? ORDER BY created_at DESC"); $stmt->execute([$selectedCategory]); } else { $stmt = $pdo->query("SELECT * FROM posts ORDER BY created_at DESC"); } $posts = $stmt->fetchAll(PDO::FETCH_ASSOC);
方案2:用按钮+表单发送GET请求(适合按钮样式需求)
如果你更想用按钮样式,那每个分类对应一个独立的小表单,点击按钮提交表单发送GET请求,注意表单要设置method="GET",并且把分类ID放在隐藏字段里:
前端代码(PHP循环生成按钮表单)
<?php if ($numOfRowsCategories > 0): ?> <div class="category-buttons"> <!-- 全部文章按钮 --> <form method="GET" action="" style="display: inline-block;"> <button type="submit" class="category-btn">全部文章</button> </form> <?php foreach ($categories as $category): ?> <form method="GET" action="" style="display: inline-block;"> <input type="hidden" name="category" value="<?php echo $category['id']; ?>"> <button type="submit" class="category-btn"> <?php echo htmlspecialchars($category['name']); ?> </button> </form> <?php endforeach; ?> </div> <?php endif; ?>
关键注意事项
- 一定要用
htmlspecialchars()转义分类名称,防止XSS攻击; - 后端用
intval()处理分类ID,配合PDO预处理语句,避免SQL注入; - 如果你的页面不是根目录,href要写对当前页面的路径,比如
href="blog.php?category=..."; - 可以给当前选中的分类加高亮样式,比如判断
$selectedCategory是否等于当前分类ID,然后添加active类。
内容的提问来源于stack exchange,提问作者Michael Presman
相关产品推荐
相关产品推荐

