开启辅助访问
帐号登录 |立即注册

案例分析:PHP 分页具体实现代码

 
数据准备
假设储存留言的数据表(guestbook)数据如下:
id
nickname
email
content
createtime
1adminadmin@5idev.com留言测试1264167501
2useruser@163.com大家好1264168127
3小明xiaoming@163.com做得好,继续努力。。1264168865
4小张xiaozhang@163.com来看看1264169118
5小丽xiaoli@tom.comhaha1283276566
6Tomtom@gmail.comHello1283336218
7Jackjack@hotmail.comokok1283336315
8adminadmin@5idev.com嗯嗯1283336315
9阿里巴巴alibaba@5idev.com来看看1283337158
10路人甲haha@163.com哈哈哈1283338228
PHP 分页技术核心在于确定当前的页数,然后利用 MySQL 的 LIMIT 关键字来指定输出对应的记录数。
如当前是第 1 页时,那么就是 LIMIT 0,4(假设一页输出 4 条记录),第 2 页时,就是 LIMIT 4,4,第 3 页时,就是 LIMIT 8,4 … 依此类推,第 n 页时,就是 LIMIT (n-1)*4,4 。
而当前页数 $p 这个参数,通过 URL 来获取。如 http://127.0.0.1/guestbook/index.php?p=2 这个这个 URL 链接,表示当前为第 2 页,PHP 中通过 $_GET['p'] 来取得对应的页数值 2 。而对于首页,则没有 $p 这个参数,那么就设定为默认值 1 即可。


分页实例的完成代码
<?php
//数据库连接
@mysql_connect("localhost","root","root123") or die("连接数据库失败:".mysql_error());
mysql_select_db("test");
mysql_query("set character set 'gbk'");
//每页显示的留言数
$pagesize = 4;
//确定页数 p 参数
$p = $_GET['p']?$_GET['p']:1;
//数据指针
$offset = ($p-1)*$pagesize;
//查询本页显示的数据
$query_sql = "SELECT * FROM guestbook ORDER BY id DESC LIMIT  $offset , $pagesize";
//echo $query_sql;
$result = mysql_query($query_sql);
//循环输出
while($gblist = mysql_fetch_array($result)){
    echo '<a href="',$gblist['nickname'],'">',$gblist['nickname'],'</a>�';
    echo '发表于:',date("Y-m-d H:i", $gblist[createtime]),'<br />';
    echo '内容:',$gblist['content'],'<br /><hr />';
}
//分页代码
//计算留言总数
$count_result = mysql_query("SELECT count(*) as count FROM guestbook");
$count_array = mysql_fetch_array($count_result);
//计算总的页数
$pagenum=ceil($count_array['count']/$pagesize);
echo '共 ',$count_array['count'],' 条留言';
//循环输出各页数目及连接
if ($pagenum > 1) {
    for($i=1;$i<=$pagenum;$i++) {
        if($i==$p) {
            echo ' [',$i,']';
        } else {
            echo ' <a href="index.php?p=',$i,'">',$i,'</a>';
        }
    }
}
?>

运行显示效果:
Tom 发表于:2010-09-01 18:16
内容:Hello
--------------------------------------------------------------------------------
小丽 发表于:2010-09-01 01:42
内容:hahaha
--------------------------------------------------------------------------------
小张 发表于:2010-01-22 22:05
内容:来看看
--------------------------------------------------------------------------------
小明 发表于:2010-01-22 22:01
内容:做得好,继续努力
--------------------------------------------------------------------------------
共 10 条留言 1 [2] 3


回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。