如何实现点击链接从数据库展示对应分类产品数据?
解决分类跳转展示对应数据库内容的问题
嘿,我明白你期末项目的需求——点击不同硬件分类链接,在新页面只展示对应类别的产品。之前用POST按钮的思路其实绕远路了,这种场景用GET请求更合适,既简单又符合网页跳转的语义,下面给你一步步的解决方案:
第一步:修改分类链接(parts.php)
把原来的表单POST改成带分类参数的<a>标签,这样点击链接时直接把分类信息通过URL传递给display.php:
<!-- parts.php 里的分类区域代码 --> <div class="partbox"> <a href="display.php?category=处理器">处理器</a> </div> <div class="partbox"> <a href="display.php?category=主板">主板</a> </div> <div class="partbox"> <a href="display.php?category=显卡">显卡</a> </div>
这样用户点击链接后,URL会变成display.php?category=处理器,一目了然,还能收藏这个页面。
第二步:处理分类展示(display.php)
在display.php里,我们需要接收URL里的分类参数,验证它的合法性,再从数据库查询对应数据并展示。这里用预处理语句防止SQL注入,同时加白名单验证避免非法参数:
<?php // 1. 连接数据库(替换成你的数据库账号密码) $db_host = "localhost"; $db_user = "你的用户名"; $db_pass = "你的密码"; $db_name = "你的数据库名"; $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name); if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } // 2. 获取并验证分类参数 $selected_category = $_GET['category'] ?? ''; // 定义允许的分类白名单,防止非法参数 $allowed_cats = ['处理器', '主板', '显卡']; if (!in_array($selected_category, $allowed_cats)) { echo "<p>抱歉,没有这个分类哦!</p>"; exit; } // 3. 安全查询对应分类的产品(假设你的产品表叫products,分类字段是category) $stmt = mysqli_prepare($conn, "SELECT * FROM products WHERE category = ?"); mysqli_stmt_bind_param($stmt, "s", $selected_category); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); // 4. 渲染产品列表 echo "<h2>$selected_category 产品列表</h2>"; if (mysqli_num_rows($result) > 0) { echo "<div class='product-list'>"; while ($product = mysqli_fetch_assoc($result)) { // 这里根据你的表结构展示产品信息,比如名称、价格、图片等 echo "<div class='product-item'>"; echo "<h3>" . htmlspecialchars($product['name']) . "</h3>"; echo "<p>价格: " . htmlspecialchars($product['price']) . " 元</p>"; echo "</div>"; } echo "</div>"; } else { echo "<p>当前分类暂无产品~</p>"; } // 清理资源 mysqli_stmt_close($stmt); mysqli_close($conn); ?>
为什么不用POST?
POST请求更适合提交数据(比如用户注册、提交订单),而分类筛选属于获取数据的场景,GET请求的优势很明显:
- URL可见参数,用户可以收藏或分享特定分类的页面
- 符合HTTP语义,搜索引擎也能更好地抓取这些分类页面
- 代码比表单POST更简洁,不需要额外的表单和提交按钮
如果坚持要用POST的话,也可以把每个分类做成独立的表单提交按钮,但真的没必要,GET是更优的选择。
内容的提问来源于stack exchange,提问作者Rohan Lukhoo
相关产品推荐
相关产品推荐

