当前位置:首页 > 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);
}

结果展示页面

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

php实现搜索界面

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);

高级搜索功能

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

php实现搜索界面

<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实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…

vue实现后台界面

vue实现后台界面

Vue 实现后台界面的方法 使用 Vue 实现后台界面通常需要结合 UI 框架、路由管理和状态管理工具。以下是具体实现步骤: 1. 项目初始化 使用 Vue CLI 或 Vite 创建项目: np…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…