一、封装配置信息

1、我们可以做一个配置文件config.php。将需要使用到的配置全部设置为常量,代码如下:

<?php//数据库服务器define('DB_HOST', 'localhost');//数据库用户名define('DB_USER', 'root');//数据库密码define('DB_PWD', 'secret');//库名define('DB_NAME', 'book');//字符集define('DB_CHARSET', 'utf8');

2、2.我们将connection.php页面抽取出来,以后需要连接数据库的时候只需要包含connection.php文件即可。

代码如下:

<?phpinclude 'config.php';$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);if (mysqli_errno($conn)) {  mysqli_error($conn);    exit;  }mysqli_set_charset($conn, DB_CHARSET);?>

我们在以后每个文件使用中直接包含 connection.php文件就可以实现数据库连接了:

include 'connection.php';

二、显示分页实现

页要实现分页中包含以下几个基本元素:

分页.jpg

我们在控制页码的时候,都是通过URL地址栏传入页码值来实现的页码控制。在page.php后面接上页码的相关信息,我们就能够算出更多的有效信息。url控制分页的效果如下:

分页.png

在代码实现中,是通过limit后的偏移量(offset)和数量(num),这两个值真正实现的分页。

limit offset , num

分页01.jpg

假设每页显示5条。最终得到的分页中控制limit公式如下:

offset的值为 (n-1)*5num 为规定的5

三、实现步骤;

1、计算出分页所需参数

1-1、总数

通过查询user表的count(id),得到总数$count。$count_sql = 'select count(id) as c from user';$result = mysqli_query($conn, $count_sql);$data = mysqli_fetch_assoc($result);//得到总的用户数$count = $data['c'];

1-2、当前页

刚进入page.php页时,url为http://www.php.com/page.php,后面是不存在 ?page=1 页面标识号的。

因此我们需要手动创建一个页面标识号传给当前页码变量$page。

我们害怕用户传的页面中存在小数等,所以我们做一次强制的类型转换:(int) $_GET['page']。

第一种写法:

$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;

第二种写法:

if (isset($_GET['page'])) {    $page = (int) $_GET['page'];} else {    $page = 1;}

1-3、最后一页

每一页一定是一个整数。就跟小学的时候数学一样。平均有5.6个人应该准备几个苹果。答案一定是6个。

如果页面出来了20.3个页面,一定是使用进一法取整函数ceil。让分页数变为21。

我们用总数除以每页显示的数据条数,就得到了总页数了。

//每页显示数$num = 5;$total = ceil($count / $num);

1-4、上下页异常情况控制

如果用户的在第一页点击了上一页,在最后一页点击了下一页怎么办呢?

这样的话数据会超出范围,而造成我们分页时无数据显示。

显然这种异常情况需要考虑到。因此,如果在分页时在第一页减一时,我们就让他为第一页。
在最后一页加一时,我们就让他为最后一页,即完成了异常控制。

if ($page <= 1) {    $page = 1;}if ($page >= $total) {    $page = $total;}

2、SQL语句

我们之前说过分页的核心是通过SQL语句中的offset和num来控制每页显示数。

$num = 5;$offset = ($page - 1) * $num;

我们将$num和$offset应用于SQL语句中:

$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";

控制好URI中的分页值

echo '<tr>    <td colspan="5">    <a href="page.php?page=1">首页</a>    <a href="page.php?page=' . ($page - 1) . '">上一页</a>    <a href="page.php?page=' . ($page + 1) . '">下一页</a>    <a href="page.php?page=' . $total . '">尾页</a>    当前是第 ' . $page . '页  共' . $total . '页    </td>    </tr>';

四、整体代码实现

include 'connection.php';$count_sql = 'select count(id) as c from user';$result = mysqli_query($conn, $count_sql);$data = mysqli_fetch_assoc($result);//得到总的用户数$count = $data['c'];$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;/*if (isset($_GET['page'])) {    $page = (int) $_GET['page'];} else {    $page = 1;} */ //每页显示数$num = 5;//得到总页数$total = ceil($count / $num);if ($page <= 1) {    $page = 1;}if ($page >= $total) {    $page = $total;}$offset = ($page - 1) * $num;$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";$result = mysqli_query($conn, $sql);if ($result && mysqli_num_rows($result)) {    //存在数据则循环将数据显示出来    echo '<table width="800" border="1">';    while ($row = mysqli_fetch_assoc($result)) {        echo '<tr>';        echo '<td>' . $row['username'] . '</td>';        echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>';        echo '<td>' . long2ip($row['createip']) . '</td>';        echo '<td><a href="edit.php?id=' . $row['id'] . '">编辑用户</a></td>';        echo '<td><a href="delete.php?id=' . $row['id'] . '">删除用户</a></td>';        echo '</tr>';    }    echo '<tr><td colspan="5"><a href="page.php?page=1">首页</a>  <a href="page.php?page=' . ($page - 1) . '">上一页</a>   <a href="page.php?page=' . ($page + 1) . '">下一页</a>  <a href="page.php?page=' . $total . '">尾页</a>  当前是第 ' . $page . '页  共' . $total . '页 </td></tr>';    echo '</table>';} else {    echo '没有数据';}mysqli_close($conn);

以上内容便实现了简单的分页功能,相了解更多相关内容请访问PHP中文网:PHP视频教程

更多相关文章

  1. php使用QueryList轻松采集JavaScript动态渲染页面
  2. PHP检测给定url是否是404页面的方法
  3. 利用会话控制实现页面登录与注销功能
  4. 优化博客页面访问速度
  5. 图书管理系统【部署开发环境、解决分类、图书、前台页面模块】
  6. html页面传值问题已解决
  7. 如何检测用户有关退出页面的信息?
  8. jQuery使用之(四)处理页面的表单元素
  9. 如果原始页面加载是https,那么没有完整网址的jQuery $ .ajax会保

随机推荐

  1. PHP 使用 Trait 解决 PHP 单继承问题的实
  2. 详解PHP中password_hash的功能
  3. PHP中serialize的详细介绍
  4. php实现简单的登陆功能(附源码)
  5. PHP中unserialize的使用方法
  6. PHP使用JWT创建Token的实例详解
  7. PHP中php_uname的用法详解
  8. PHP源码加密方法实例详解
  9. 详述php的下载安装教程
  10. php实现简单的留言板功能(附源码)