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 无刷新分页等。