if($from < 1){
$to = $curpage + 1 - $from; //重点这句
$from = 1;
if(($to - $from) < $page && ($to - $from) < $totalpage){
$to = $page;
}
}elseif($to > $totalpage){
$from = $curpage - $totalpage + $to;//重点这句
$to = $curpage + 1 - $from; //重点这句
$from = 1;
if(($to - $from) < $page && ($to - $from) < $totalpage){
$to = $page;
}
}elseif($to > $totalpage){
$from = $curpage - $totalpage + $to;//重点这句
$to = $curpage + $page - $offset - 1; //新的结束页码
if($from < 1) { //如果新的开始页码小于1 ,则新的开始页码为1,结束页码后移,保持从开始到结束有一个固定页码数
$to = $curpage + 1 - $from;
$from = 1;
if(($to - $from) < $page && ($to - $from) < $pages) {
to = $page; // 如果从开始到结束的页码数小于一定量,重新给结束页赋值
}
} elseif($to > $pages) { //如果结束页大于最大页码,结束为最大页码,开始页码前移
$from = $curpage - $pages + $to;
$to = $pages;
if(($to - $from) < $page && ($to - $from) < $pages) {
$from = $pages - $page + 1; 如果从开始到结束的页码数小于一定量,重新给开始页赋值
}
保持从开始到结束有一个固定页码数($page)
不过好像最后一句 $from = $pages - $page + 1; 没有判断$from 是否出现负值
$to = $curpage + 1 - $from; //重点这句
//这里的$from=$curpage - $offset
//$to为什么要等于$curpage + 1 - $from 呢?
//这里的$to的值永远是$offset+1
//为什么不直接给$to一个常量或什么呢?
}
if($to > $pages){
$from = $curpage - $totalpage + $to;//重点这句
//这句话就彻底没弄明白。。当前页 - 总页数 + $to
//这里的$to= $curpage(当前页) + $page - $offset - 1
}
$from =$curpage -($pages-$to);
首先要统计满足条件的记录总数,
其次确定每页显示的记录数
第二计算分几页,
最后怎么显示,就看自己的需要了。在MYSQL有LIMIT非常容易控制。
$to = $curpage + $page - $offset - 1;
if($from < 1) {
$to = $to + 1 - $from;
$from = 1;
} elseif($to > $pages) {
$from = $from -($to - $pages) ;
$to = $pages;
}
这样写或许会更好些
'参数:rs 记录集
' pagesize 页尺寸
' page指向的 页号
' page Count返回的页总数
function tPage(rs, pagesize, page, pageCount)
if Not IsNumeric( page ) then
page = 1
else
page = CInt( page )
end if if pagesize="" then pagesize=20 rs.pagesize = pagesize '页尺寸的有效性由用户自己负责 if page < 1 then page = 1
if page > rs.PageCount then page = rs.PageCount
on error resume next
rs.AbsolutePage = page
on error goto 0 pageCount = rs.pageCount '输出pageCount
end function