php简单分页类制作

以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

前10条记录:select * from table limit 0,10

第11至20条记录:select * from table limit 10,10

第21至30条记录:select * from table limit 20,10

……
  这一组sql语句其实就是当PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:select * from table limit (CurrentPageID - 1) * $PageSize, $PageSize

<?php  
// 数据库连接常量  
define('DB_HOST', 'localhost');  
define('DB_USER', 'root');  
define('DB_PWD', '');  
define('DB_NAME', 'guest');  

// 连接数据库  
function conn()  
{  
    $conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);  
    mysqli_query($conn, "set names utf8");  
    return $conn;  
}  

//获得结果集  
function doresult($sql){  
   $result=mysqli_query(conn(), $sql);  
   return  $result;  
}  

//结果集转为对象集合  
function dolists($result){  
    return mysqli_fetch_array($result, MYSQL_ASSOC);  
}  
function totalnums($sql) {  
    $result=mysqli_query(conn(), $sql);  
    return $result->num_rows;  
}  

// 关闭数据库  
function closedb()  
{  
    if (! mysqli_close()) {  
        exit('关闭异常');  
    }  
}  
?>  

分页实现代码:

<?php  
include 'mysqli.func.php';  

// 总记录数  
$sql = "SELECT dg_id  FROM  tb_user ";  
$totalnums = totalnums($sql);  

// 每页显示条数  
$fnum = 8;  

// 翻页数  
$pagenum = ceil($totalnums / $fnum);  

// 页数常量  
$tmp = $_GET['page'];  
$page = isset($_GET['page'])?$_GET['page']:1;

//分页
$shangye = ($page==1)?0:($page - 1);//上一页
$n = ($page == $fenye_qzheng) ? 0 : ($page + 1);//下一页


//计算分页起始值  
if ($tmp == "") {  
    $num = 0;  
} else {  
    $num = ($tmp - 1) * $fnum;  
}  

// 查询语句  
$sql = "SELECT dg_id,dg_username  FROM  tb_user ORDER BY dg_id DESC LIMIT " . $num . ",$fnum";  
$result = doresult($sql);  

// 遍历输出  
while ( ! $rows = dolists($result)) {  
    echo $rows['dg_id'] . " " . $rows['dg_username'] . "<br>";  
}  

// 翻页链接  
for ($i = 0; $i < $pagenum; $i ++) {  
    echo "<a href=index.php?page=" . ($i + 1) . ">" . ($i + 1) . "</a>";  
}  
?>  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值