一个分页类
class machine_page{
var $title_count=0;//帖子总数
var $title_rows=10;//每页显示多少行
var $show_page=7;//每页显示多少个跳转页号
var $page_count=0;//共有多少页
var $current_page=1;//当前页
var $start=0;//开始记录
var $start_page=1;//开始页号
var $page_arr=array();//开始记录
function machine_page($count,$current_page=1,$title_rows=10,$show_page=7){//构造函数
$this->title_count=(int)$count;//获取传入的帖子总数
$this->current_page=(int)$current_page;//获取当前页
$this->title_rows=(int)$title_rows;//显示多少行
$this->show_page=$show_page;//每页显示多少个跳转页号
$this->count_page();//调用计算页数的方法
$this->return_page_arr();//调用返回跳转页号的方法
}
function count_page(){//计算页数
//计算共有多少页
@$this->page_count=ceil($this->title_count/$this->title_rows);
//防止$this->title_rows意外等于0时的错误
$this->page_count=(int)$this->page_count;
//如果当前页大于最大页数,则使其等于最大页数;如果当前页小于1,则使其等于1
if ($this->current_page>$this->page_count)$this->current_page=$this->page_count;
if ($this->current_page<1)$this->current_page=1;
//计算查询的开始记录数
$this->start=($this->current_page-1)*$this->title_rows;
}
function return_page_arr(){//返回页面跳转页号的函数
//用当前页除以显示页数得到当前是第几“大页”
$start_s=floor($this->current_page/$this->show_page);
/*
如果当前页号正好整除显示页数,则应该对$start_s减一,因为设想一下,如果当前是第7页
显示页数也是7,则$start_s=1,也就是说已经到了第二“大页”了,而实际上它应该还是在
第一“大页”
*/
if ($this->current_page%$this->show_page==0)$start_s--;
//计算开始页号,算法是当前“大页”*显示页数+1;例如0*7+1=1,1*7+1=8,2*7+1=15
$this->start_page=$start_s*$this->show_page+1;
//开始循环计算当前大页中的小页号
for ($i=0;$i<$this->show_page;$i++){
//如果下一个页号已经超出了总页数,则说明应该停止了
if ($this->start_page+$i>$this->page_count)break;
//将页号记录在$this->page_arr数组中
$this->page_arr[]=$this->start_page+$i;
}
}
}
?>
操作方法
一、简单操作:
1、//取得当前页号
$current_page=(int)$_GET['page'];
2、//统计帖子数
$title_count=…………//这里大家可以采用自己的方法来统计
3、//使用分页类
$page_obj=new page($title_count$current_page);
二、完全操作
1、//取得当前页号
$current_page=(int)$_GET['page'];
2、//统计帖子数
$title_count=…………//这里大家可以采用自己的方法来统计
3、//使用分页类
$page_obj=new machine_page($title_count$current_page,10,7);
大家注意到,我只是在加了两个参数10,7这两个表示什么呢?
10表示每页显示10行,7表示显示7个跳转页号。
什么是跳转页号呢?例如,当你在查看1-7页的时候,将显示1 2 3 4 5 6 7
当你在查看第8-14页的时候将显示8 9 10 11 12 13 14
下面说这个类的使用:
这个类将返回这些属性
1:$page_obj->start 查询的起始位置,例:select … limit $page_obj->start,10
2:$page_obj->title_rows 查询返回的行数,例:limit $page_obj->start,$page_obj->title_rows
4:$page_obj->page_arr 代表页面跳转页号的数组,例如1234567(注意,它是一个数组)
5:$page_obj->page_count 代表共有多少页
6:$page_obj->title_count 代表共有多少帖
7:$page_obj->start_page 代表跳转页的开始页号,例如当前是1-7,就为1,如果是8-14,就为8
这个是用来翻“大页”的,例如当前如果是第4页,那么下一个大页的
开始页就应该是8,如果当前是第9页,那么下一个大页的开始页就是15
而上一个开始页就为1,那么我们可以通过这样来实现大页之间的跳转。
假设现在我们在第9页,那么$page_obj->start_page的值就为8如果我
想跳到上一个大页的末尾(即7),那么就是$page_obj->start_page-1
如果我想跳到下一个大页的开始(即15),
那么就是$page_obj->start_page+$page_obj->show_page
这样解释大家应该明白了吧?
版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-01/i475.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论