当前位置:首页 > PHP

php实现搜索界面

2026-02-16 00:20:11PHP

PHP 搜索界面实现方法

基础表单设计

创建一个简单的 HTML 表单用于接收用户搜索词,表单 method 建议使用 GET 以便保留搜索历史:

<form action="search.php" method="get">
    <input type="text" name="keywords" placeholder="输入搜索关键词">
    <button type="submit">搜索</button>
</form>

数据库查询处理

在 search.php 中处理搜索逻辑,使用预处理语句防止 SQL 注入:

if(isset($_GET['keywords'])) {
    $keywords = trim($_GET['keywords']);
    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

    $stmt = $db->prepare("SELECT * FROM products 
                         WHERE name LIKE :keywords 
                         OR description LIKE :keywords");
    $searchTerm = "%$keywords%";
    $stmt->bindParam(':keywords', $searchTerm);
    $stmt->execute();

    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

结果展示页面

循环输出查询结果并高亮显示匹配关键词:

foreach($results as $item) {
    echo '<div class="result-item">';
    echo '<h3>'.preg_replace("/$keywords/i", "<mark>$0</mark>", $item['name']).'</h3>';
    echo '<p>'.preg_replace("/$keywords/i", "<mark>$0</mark>", $item['description']).'</p>';
    echo '</div>';
}

分页功能实现

添加 LIMIT 和 OFFSET 实现分页查询:

$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;

$stmt = $db->prepare("SELECT * FROM products 
                     WHERE name LIKE :keywords 
                     LIMIT :offset, :perPage");
$stmt->bindParam(':keywords', $searchTerm);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);

高级搜索功能

扩展表单支持多条件筛选:

<form action="search.php" method="get">
    <input type="text" name="keywords" placeholder="关键词">
    <select name="category">
        <option value="">所有分类</option>
        <option value="1">电子产品</option>
        <option value="2">家居用品</option>
    </select>
    <input type="number" name="min_price" placeholder="最低价格">
    <button type="submit">高级搜索</button>
</form>

AJAX 实时搜索

使用 jQuery 实现实时搜索建议:

$('#search-input').keyup(function(){
    $.get('live_search.php', {query: $(this).val()}, function(data){
        $('#suggestions').html(data);
    });
});

搜索日志记录

记录用户搜索行为以便分析:

if(!empty($keywords)) {
    $log = $db->prepare("INSERT INTO search_log 
                        (keyword, ip_address, user_agent) 
                        VALUES (?, ?, ?)");
    $log->execute([
        $keywords, 
        $_SERVER['REMOTE_ADDR'],
        $_SERVER['HTTP_USER_AGENT']
    ]);
}

php实现搜索界面

标签: 界面php
分享给朋友:

相关文章

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…