php怎么做搜索后分页
时间 : 2023-04-07 05:42:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
在PHP中实现搜索后分页的步骤如下:
1. 创建HTML表单或搜索框,用于向后端发送搜索关键字。例如,可以在HTML文件中创建一个表单,其中有一个“关键字”输入框和一个提交按钮:
<form method="get" action="search.php">
<input type="text" name="keyword">
<input type="submit" value="Search">
</form>
2. 在PHP文件中接收前端传递过来的搜索关键字,并根据关键字从数据库中获取符合条件的所有数据。
<?php
// 获取关键字
$keyword = $_GET['keyword'];
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
// 从数据库中获取匹配的数据
$sql = "SELECT * FROM myTable WHERE column LIKE '%$keyword%'";
$result = $conn->query($sql);
// ...
?>
3. 计算总共匹配数据的数量,以及需要展示的页数。
<?php
// 获取关键字
$keyword = $_GET['keyword'];
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
// 从数据库中获取匹配的数据
$sql = "SELECT * FROM myTable WHERE column LIKE '%$keyword%'";
$result = $conn->query($sql);
// 计算匹配数据的总数
$total_count = $result->num_rows;
// 设置一页需要展示的数量
$page_size = 10;
// 计算需要展示的页数
$page_count = ceil($total_count / $page_size);
// ...
?>
4. 根据需要展示的页数,以及当前展示的页码,生成分页导航条。
<?php
// 获取关键字
$keyword = $_GET['keyword'];
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
// 从数据库中获取匹配的数据
$sql = "SELECT * FROM myTable WHERE column LIKE '%$keyword%'";
$result = $conn->query($sql);
// 计算匹配数据的总数
$total_count = $result->num_rows;
// 设置一页需要展示的数量
$page_size = 10;
// 计算需要展示的页数
$page_count = ceil($total_count / $page_size);
// 获取当前展示的页码
$current_page = isset($_GET['page']) ? $_GET['page'] : 1;
// 生成分页导航条
$nav = "";
for ($i=1; $i<=$page_count; $i++) {
if ($i == $current_page) {
$nav .= "<span>$i</span>";
} else {
$nav .= "<a href=\"search.php?keyword=$keyword&page=$i\">$i</a>";
}
}
echo $nav;
?>
5. 根据当前展示的页码,以及一页需要展示的数量,从数据库中获取需要展示的数据。
<?php
// 获取关键字
$keyword = $_GET['keyword'];
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
// 获取当前展示的页码
$current_page = isset($_GET['page']) ? $_GET['page'] : 1;
// 设置一页需要展示的数量
$page_size = 10;
// 计算当前需要展示的数据在数据库中的起始位置(偏移量)
$offset = ($current_page - 1) * $page_size;
// 从数据库中获取需要展示的数据
$sql = "SELECT * FROM myTable WHERE column LIKE '%$keyword%' LIMIT $offset, $page_size";
$result = $conn->query($sql);
// 在HTML页面中展示需要展示的数据
while ($row = $result->fetch_assoc()) {
// ...
}
?>
通过以上步骤,就可以在PHP中实现搜索后分页的功能。需要注意的是,以上代码仅为示例代码,具体代码实现可能会因为数据库类型、数据表结构等因素而略有不同。
在 PHP 中,可以使用 SQL 语句获取搜索结果,然后进行分页处理。下面是一些步骤:
1. 获取搜索关键词,可以通过 HTML 表单或 URL 参数等方式传递。
2. 执行 SQL 语句,获取搜索结果,例如:
```php
$keywords = $_GET['keywords'];
$sql = "SELECT * FROM articles WHERE title LIKE '%$keywords%' OR content LIKE '%$keywords%'";
$result = mysqli_query($conn, $sql);
其中 `$conn` 是数据库连接对象,`articles` 是表名,`title` 和 `content` 是要搜索的字段,`LIKE` 是模糊查询的符号,`%` 是通配符,表示匹配任意字符。
3. 计算搜索结果总数和页数,根据每页显示的记录数和当前页码,计算出需要显示的记录范围。例如:
```php
$total = mysqli_num_rows($result); // 搜索结果总数
$per_page = 10; // 每页显示 10 条记录
$total_page = ceil($total / $per_page); // 总页数
if (!isset($_GET['page']) || $_GET['page'] <= 0) {
$page = 1;
} elseif ($_GET['page'] > $total_page) {
$page = $total_page;
} else {
$page = $_GET['page'];
}
$start = ($page - 1) * $per_page; // 起始记录位置
$sql .= " LIMIT $start, $per_page";
$result = mysqli_query($conn, $sql); // 取出分页数据
其中 `ceil()` 函数是向上取整,`$start` 是起始记录位置,`LIMIT` 是用来限制查询结果的数量,第一个参数是起始位置,第二个参数是要取出的记录数。
4. 显示搜索结果和分页链接,例如:
```php
// 显示搜索结果
while ($row = mysqli_fetch_assoc($result)) {
echo '<h2>' . $row['title'] . '</h2>';
echo '<p>' . $row['content'] . '
';}
// 显示分页链接
if ($total_page > 1) {
echo '<div class="pagination">';
echo '<span class="page-info">共 ' . $total . ' 条记录,当前显示第 ' . $page . ' 页</span>';
if ($page > 1) {
echo '<a href="search.php?keywords=' . $keywords . '&page=' . ($page - 1) . '">上一页</a>';
}
for ($i = 1; $i <= $total_page; $i++) {
echo '<a href="search.php?keywords=' . $keywords . '&page=' . $i . '"';
if ($i == $page) {
echo ' class="active"';
}
echo '>' . $i . '</a>';
}
if ($page < $total_page) {
echo '<a href="search.php?keywords=' . $keywords . '&page=' . ($page + 1) . '">下一页</a>';
}
echo '</div>';
}
其中 `mysqli_fetch_assoc()` 是取出每一行记录,`$total_page` 是总页数,`$i` 是循环变量,用来显示分页链接。
这就是 PHP 实现搜索后分页的基本步骤,当然,还可以进行优化,比如缓存查询结果、使用 AJAX 无刷新分页等。
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章