You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于下拉选择角色实现PHP页面数据库用户数据筛选展示

实现角色过滤用户列表的方案

咱们可以通过以下几步来完成这个按角色筛选用户的功能,核心逻辑就是根据下拉框提交的角色值,动态调整数据库的查询条件,从而展示对应的数据:

1. 调整前端页面(index.php)

首先要在页面顶部处理用户提交的角色参数,把它传递给获取用户的方法,同时让下拉框记住用户选中的选项,提升体验:

<?php 
include_once 'dbop.php'; 
// 获取提交的角色参数,默认空值表示显示所有用户
$selected_role = isset($_POST['role']) ? $_POST['role'] : '';
$objUser = new Users(); 
// 将选中的角色传给查询方法
$users = $objUser->get_users($selected_role); 
?>
<!DOCTYPE html>
<html lang="en">
<!-- 省略其他头部/样式内容 -->
<form action="index.php" method="POST">
<select name="role" id="role">
<!-- 给每个选项添加选中状态判断,保持用户选择 -->
<option value="Admin" <?php echo $selected_role === 'Admin' ? 'selected' : ''; ?>>Admin</option>
<option value="SysAdmin" <?php echo $selected_role === 'SysAdmin' ? 'selected' : ''; ?>>SysAdmin</option>
<option value="User" <?php echo $selected_role === 'User' ? 'selected' : ''; ?>>User</option>
<!-- 新增"全部角色"选项,方便查看所有数据 -->
<option value="" <?php echo $selected_role === '' ? 'selected' : ''; ?>>全部角色</option>
</select>
<!-- 添加提交按钮,触发筛选操作 -->
<button type="submit">筛选</button>
<table>
<thead>
<tr>
<th>Name</th>
<th>Role</th>
</tr>
</thead>
<tbody>
<?php for($i = 0; $i < sizeof($users); $i++) { ?>
<tr>
<!-- 用htmlspecialchars转义输出,避免XSS风险 -->
<td><?php echo htmlspecialchars($users[$i]["name"]); ?></td>
<td><?php echo htmlspecialchars($users[$i]["role"]); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</form>
<!-- 省略其他页面内容 -->
</html>

2. 修改数据库查询方法(dbop.php)

接下来要更新get_users方法,让它支持接收角色参数,并动态生成带过滤条件的SQL语句,这里重点要注意SQL注入风险,所以用mysqli预处理语句来保证安全:

<?php
// 省略类的其他初始化/方法代码
public function get_users($role = '') {
    // 基础查询语句
    $sql = "select name, role from users";
    // 如果传入了角色参数,添加WHERE过滤条件
    if (!empty($role)) {
        $sql .= " WHERE role = ?";
    }
    
    // 使用预处理语句防止SQL注入
    $stmt = $this->dbObj->prepare($sql);
    if (!empty($role)) {
        // 绑定参数,"s"表示参数为字符串类型
        $stmt->bind_param("s", $role);
    }
    $stmt->execute();
    $result = $stmt->get_result();
    
    $data_all = array();
    if ($result != null && mysqli_num_rows($result) > 0) {
        while($fetch_data = mysqli_fetch_assoc($result)) {
            $arr = array();
            $arr["name"] = $fetch_data['name'];
            $arr["role"] = $fetch_data['role'];
            $data_all[] = $arr;
        }
    }
    // 关闭预处理语句
    $stmt->close();
    return $data_all;
}
?>

3. 功能测试

现在你可以运行页面测试了:

  • 选择任意角色,点击"筛选"按钮,页面会提交请求并展示对应角色的用户
  • 选择"全部角色",会显示所有用户记录
  • 页面刷新后,下拉框会保持你之前选中的角色选项

内容的提问来源于stack exchange,提问作者Amol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:02:01