21,891
社区成员
发帖
与我相关
我的任务
分享
/**
* 分页处理
*
* @access public
* @param $count 数据总数量
* @param $readperpage 每页数据量
* @param $key 当前页数字段
* @return array() page-当前页码 total-总页数 count-数据总数量 start-游标开始数 readperpage-每页/获取数据量
*/
function page($count=0, $readperpage=15, $key='page')
{
// 当前页数 总页数 开始游标 需获取记录数
$data = array('page'=>(int)$_REQUEST[$key], 'count'=>$count, 'total'=>1, 'start'=>0, 'readperpage'=>$readperpage);
// 计算总页数
$data['total'] = ceil($count/$readperpage);
// 验证当前页数
if ( $data['page'] < 1 )
$data['page'] = 1;
elseif ( $data['page'] > $data['total'] )
$data['page'] = $data['total'];
// 计算游标
if( $data['page'] > 1 )
$data['start'] = ( $data['page'] - 1 ) * $readperpage;
unset($key, $count, $readperpage);
return $data;
}
//获取页码
$page = $_GET['page'];
if ($page){
$page = 1;
}
//设置每页显示的数量
$page_size = 5;
// 获取总数据量
$sql = "select count(*) from 表名";
$resultt = mysql_query($sql);
$row = mysql_fetch_array($resultt);
$amount = $row['0'];
// 记算总共有多少条记录
if( $amount ){
if( $amount < $page_size ){ $page_count = 1; } //如果总数据量小于$PageSize,那么只有一页
if( $amount % $page_size and $amount > $page_size{ //取总数据量除以每页数的余数
$page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
}else{
$page_count = $amount / $page_size; //如果没有余数,则页数等于总数据量除以每页数的结果
}
}
else{
$page_count = 0;
}
$numrows=($page - 1) * $page_size;
//连接输出数据的地方就不写了吧
$sql = "select * 表名 order by id desc limit $numrows,$page_size";
……………………省略…………
//上一页下一页就是page + 1 -1这种了;根据$page计算的
//总记录数$amount总页数$page_count偏移量$numrows