当前位置:首页 > PHP

php实现筛选功能实现

2026-01-30 04:54:01PHP

实现基本的筛选功能

在PHP中实现筛选功能通常涉及接收用户输入、构建查询条件以及从数据库检索数据。以下是一个基本实现示例:

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 获取筛选条件
$filterName = $_GET['name'] ?? '';
$filterAge = $_GET['age'] ?? '';
$filterCity = $_GET['city'] ?? '';

// 构建基础SQL
$sql = "SELECT * FROM users WHERE 1=1";

// 添加筛选条件
if (!empty($filterName)) {
    $sql .= " AND name LIKE '%" . $conn->real_escape_string($filterName) . "%'";
}

if (!empty($filterAge)) {
    $sql .= " AND age = " . (int)$filterAge;
}

if (!empty($filterCity)) {
    $sql .= " AND city = '" . $conn->real_escape_string($filterCity) . "'";
}

// 执行查询
$result = $conn->query($sql);

// 显示结果
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row['name'] . ", Age: " . $row['age'] . ", City: " . $row['city'] . "<br>";
}

$conn->close();
?>

表单设计与筛选交互

创建一个HTML表单让用户输入筛选条件:

php实现筛选功能实现

<form method="GET" action="filter.php">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name">

    <label for="age">Age:</label>
    <input type="number" id="age" name="age">

    <label for="city">City:</label>
    <select id="city" name="city">
        <option value="">All Cities</option>
        <option value="New York">New York</option>
        <option value="London">London</option>
        <option value="Tokyo">Tokyo</option>
    </select>

    <button type="submit">Filter</button>
</form>

高级筛选实现

对于更复杂的筛选需求,可以使用数组和循环来构建动态查询:

php实现筛选功能实现

<?php
$filters = [
    'name' => ['operator' => 'LIKE', 'value' => '%' . ($_GET['name'] ?? '') . '%'],
    'age' => ['operator' => '=', 'value' => $_GET['age'] ?? null],
    'city' => ['operator' => '=', 'value' => $_GET['city'] ?? null]
];

$sql = "SELECT * FROM users";
$conditions = [];
$params = [];

foreach ($filters as $field => $filter) {
    if (!empty($filter['value'])) {
        $conditions[] = "$field {$filter['operator']} ?";
        $params[] = $filter['value'];
    }
}

if (!empty($conditions)) {
    $sql .= " WHERE " . implode(' AND ', $conditions);
}

$stmt = $conn->prepare($sql);
if (!empty($params)) {
    $types = str_repeat('s', count($params));
    $stmt->bind_param($types, ...$params);
}
$stmt->execute();
$result = $stmt->get_result();

使用PDO实现安全筛选

PDO提供了更安全的参数绑定方式:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');
$conditions = [];
$params = [];

if (!empty($_GET['name'])) {
    $conditions[] = "name LIKE :name";
    $params[':name'] = '%' . $_GET['name'] . '%';
}

if (!empty($_GET['age'])) {
    $conditions[] = "age = :age";
    $params[':age'] = $_GET['age'];
}

$sql = "SELECT * FROM users";
if (!empty($conditions)) {
    $sql .= " WHERE " . implode(' AND ', $conditions);
}

$stmt = $pdo->prepare($sql);
foreach ($params as $key => $value) {
    $stmt->bindValue($key, $value);
}
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

多条件组合筛选

实现多条件组合筛选,包括范围筛选和排序:

<?php
$sql = "SELECT * FROM products WHERE 1=1";
$params = [];

// 价格范围筛选
if (!empty($_GET['min_price']) && is_numeric($_GET['min_price'])) {
    $sql .= " AND price >= :min_price";
    $params[':min_price'] = $_GET['min_price'];
}

if (!empty($_GET['max_price']) && is_numeric($_GET['max_price'])) {
    $sql .= " AND price <= :max_price";
    $params[':max_price'] = $_GET['max_price'];
}

// 类别筛选
if (!empty($_GET['category'])) {
    $categories = is_array($_GET['category']) ? $_GET['category'] : [$_GET['category']];
    $placeholders = implode(',', array_fill(0, count($categories), '?'));
    $sql .= " AND category_id IN ($placeholders)";
    $params = array_merge($params, $categories);
}

// 排序
$sortOptions = ['price', 'name', 'created_at'];
$sort = in_array($_GET['sort'] ?? '', $sortOptions) ? $_GET['sort'] : 'id';
$order = ($_GET['order'] ?? 'ASC') === 'DESC' ? 'DESC' : 'ASC';
$sql .= " ORDER BY $sort $order";

$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$products = $stmt->fetchAll();

以上代码示例展示了PHP中实现筛选功能的不同方法,从基础实现到更高级的安全查询和多条件组合筛选。根据具体需求选择适合的实现方式,并始终注意SQL注入防护。

标签: 功能php
分享给朋友:

相关文章

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mo…

原生实现vue功能

原生实现vue功能

原生JavaScript实现Vue核心功能 使用原生JavaScript模拟Vue的核心功能需要理解响应式数据绑定、虚拟DOM和组件系统等概念。以下是关键实现方法: 响应式数据系统 通过Objec…

h5能实现的功能

h5能实现的功能

H5能实现的功能 H5(HTML5)是一种现代的网页技术标准,具备丰富的功能和特性,适用于多种场景。以下是H5能够实现的主要功能: 多媒体支持 H5原生支持音频和视频播放,无需依赖Flash等插件。…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_sh…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…