
一、封装配置信息
1、我们可以做一个配置文件config.php。将需要使用到的配置全部设置为常量,代码如下:
2、2.我们将connection.php页面抽取出来,以后需要连接数据库的时候只需要包含connection.php文件即可。
代码如下:
我们在以后每个文件使用中直接包含 connection.php文件就可以实现数据库连接了:
立即学习“PHP免费学习笔记(深入)”;
include 'connection.php';二、显示分页实现
页要实现分页中包含以下几个基本元素:
我们在控制页码的时候,都是通过URL地址栏传入页码值来实现的页码控制。在page.php后面接上页码的相关信息,我们就能够算出更多的有效信息。url控制分页的效果如下:
在代码实现中,是通过limit后的偏移量(offset)和数量(num),这两个值真正实现的分页。
limit offset , num
假设每页显示5条。最终得到的分页中控制limit公式如下:
offset的值为 (n-1)*5 num 为规定的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。
LOVESTUdio多校园网络店铺下载主要更新介绍: 完美整合Discuz!论坛,实现一站式登陆、退出、注册; 同步所有会员资料; 新增购物车功能,商品购买更加方便、快捷; 新增部分快捷菜单,网站访问更加方便; 限制首页商品、店铺标题显示长度; 修正会员后台管理不能更改密码的错误; 完善商品显示页面所有功能链接; 修正后台标签管理部分错误; 修正前台学校列表不按后台顺序显示的错误; 修正搜索功能中学校名称过长导致显示紊乱的现象; 修正
我们害怕用户传的页面中存在小数等,所以我们做一次强制的类型转换:(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 ''; 首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页 四、整体代码实现
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 '
| ' . $row['username'] . ' | '; echo '' . date('Y-m-d H:i:s', $row['createtime']) . ' | '; echo '' . long2ip($row['createip']) . ' | '; echo '编辑用户 | '; echo '删除用户 | '; echo '
| 首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页 | ||||
以上内容便实现了简单的分页功能,相了解更多相关内容请访问PHP中文网:PHP视频教程













