php筛选功能实现
实现PHP筛选功能的方法
数据库查询筛选
使用SQL语句结合WHERE条件实现筛选功能。假设有一个products表,包含price和category字段:
$category = $_GET['category'] ?? '';
$minPrice = $_GET['min_price'] ?? 0;
$maxPrice = $_GET['max_price'] ?? 9999;
$query = "SELECT * FROM products WHERE price BETWEEN ? AND ?";
$params = [$minPrice, $maxPrice];
if (!empty($category)) {
$query .= " AND category = ?";
$params[] = $category;
}
$stmt = $pdo->prepare($query);
$stmt->execute($params);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
表单构建
创建HTML表单用于接收筛选条件:

<form method="GET" action="filter.php">
<select name="category">
<option value="">所有分类</option>
<option value="electronics">电子产品</option>
<option value="clothing">服装</option>
</select>
<input type="number" name="min_price" placeholder="最低价格">
<input type="number" name="max_price" placeholder="最高价格">
<button type="submit">筛选</button>
</form>
数组数据筛选
对于内存中的数组数据,可以使用array_filter函数:
$products = [
['name' => '手机', 'price' => 2999, 'category' => 'electronics'],
['name' => '衬衫', 'price' => 199, 'category' => 'clothing']
];
$filtered = array_filter($products, function($item) {
$match = true;
if (isset($_GET['category']) && $_GET['category'] !== ''
&& $item['category'] !== $_GET['category']) {
$match = false;
}
if (isset($_GET['min_price']) && $item['price'] < $_GET['min_price']) {
$match = false;
}
return $match;
});
分页处理
结合筛选功能实现分页:

$page = $_GET['page'] ?? 1;
$perPage = 10;
$offset = ($page - 1) * $perPage;
$query .= " LIMIT ? OFFSET ?";
$params[] = $perPage;
$params[] = $offset;
AJAX筛选
使用jQuery实现无刷新筛选:
$('#filter-form').on('change', function() {
$.get('api/filter.php', $(this).serialize(), function(data) {
$('#results-container').html(data);
});
});
安全注意事项
对用户输入进行验证和过滤:
$minPrice = filter_input(INPUT_GET, 'min_price', FILTER_VALIDATE_FLOAT);
$maxPrice = filter_input(INPUT_GET, 'max_price', FILTER_VALIDATE_FLOAT);
$category = htmlspecialchars($_GET['category'] ?? '');
这些方法可以根据具体需求组合使用,构建完整的筛选功能系统。数据库查询方式适合大数据量,数组筛选适合小数据集,AJAX实现能提升用户体验。






