用PHP、MySQL、layui实现搜索功能
时间: 2023-12-25 22:04:56 浏览: 77
好的,下面是一个简单的实现搜索功能的示例代码:
1. 创建数据库表
首先,我们需要创建一个数据库表来存储需要搜索的数据。假设我们要搜索文章,那么可以创建一个名为 "articles" 的表,其中包含以下字段:
- id: 文章的唯一标识符
- title: 文章的标题
- content: 文章的内容
- created_at: 文章的创建时间
可以使用以下 SQL 语句创建这个表:
```sql
CREATE TABLE `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
2. 创建搜索表单页面
接下来,我们需要创建一个搜索表单页面,让用户输入关键字进行搜索。可以使用 layui 框架创建一个简单的搜索表单,代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>搜索文章</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css">
<script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script>
</head>
<body>
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-md-offset3 layui-col-md6">
<form class="layui-form" action="search.php" method="get">
<div class="layui-form-item">
<div class="layui-input-block">
<input type="text" name="keyword" lay-verify="required" placeholder="请输入关键字" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="search">搜索</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
```
这个页面包含一个文本框和一个搜索按钮。当用户点击搜索按钮时,表单数据会提交到 "search.php" 页面进行处理。
3. 创建搜索结果页面
接下来,我们需要创建一个搜索结果页面,显示匹配关键字的文章列表。可以使用以下 PHP 代码从数据库中查询匹配的文章:
```php
<?php
// 连接数据库
$db_host = 'localhost';
$db_name = 'test';
$db_user = 'root';
$db_pass = '';
$db_charset = 'utf8mb4';
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
die('连接数据库失败:' . $conn->connect_error);
}
// 处理搜索请求
if (isset($_GET['keyword'])) {
$keyword = $conn->real_escape_string($_GET['keyword']);
$sql = "SELECT * FROM articles WHERE title LIKE '%$keyword%' OR content LIKE '%$keyword%' ORDER BY created_at DESC";
$result = $conn->query($sql);
}
// 显示搜索结果
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>搜索结果</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css">
<script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script>
</head>
<body>
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-md-offset3 layui-col-md6">
<?php if (isset($_GET['keyword'])): ?>
<blockquote class="layui-elem-quote">共找到 <?php echo $result->num_rows; ?> 篇文章</blockquote>
<?php while ($row = $result->fetch_assoc()): ?>
<div class="layui-card">
<div class="layui-card-header"><?php echo $row['title']; ?></div>
<div class="layui-card-body"><?php echo $row['content']; ?></div>
<div class="layui-card-footer"><?php echo $row['created_at']; ?></div>
</div>
<?php endwhile; ?>
<?php else: ?>
<blockquote class="layui-elem-quote">请输入关键字进行搜索</blockquote>
<?php endif; ?>
</div>
</div>
</div>
</body>
</html>
```
这个页面会根据用户输入的关键字从数据库中查询匹配的文章,并以卡片列表的形式展示出来。
4. 完成搜索功能
最后,我们需要将搜索表单页面和搜索结果页面连接起来。可以在搜索表单页面的 form 元素中添加 action 属性,将其设置为搜索结果页面的 URL:
```html
<form class="layui-form" action="search.php" method="get">
```
这样,当用户在搜索表单页面输入关键字并点击搜索按钮时,就会跳转到搜索结果页面,并显示匹配的文章列表。
以上就是用 PHP、MySQL、layui 实现搜索功能的示例代码。需要注意的是,这只是一个简单的示例,实际应用中还需要考虑性能、安全性等方面的问题。
阅读全文