php 高效分页,php高效分页类代码(1/2)

class pagebreak {

private $mtotalrowsnum = 0; // 总信息行数

private $mcurpagenumber = 1; // 当前所在页

private $mtotalpagesnum = 1; // 总页数

private $mquerystring; // 页面传递的数据(url?后的字符串)

private $mpagerowsnum = 20; // 每页显示行数

private $mindexbarlength = 5; // 索引条的页数

private $mindexbar = ''; // 页码索引条

private $mpageinfo = ''; // 分页信息

// 页码索引条样式

private $mnextbutton = "8";

private $mprebutton = "7";

private $mfirstbutton = "9";

private $mlastbutton = ":";

private $mcss教程indexbarcurpage = "font-weight:bold;color:#ff0000";

private $mcssindexbarpage = '';

// 分页信息样式

private $mcsspageinfonumfont = 'color:#ff0000';

private $mcsspageinfofont = '';

// 构造方法

public function __construct(&$rsqlquery, $userpagerowsnum='') {

if( !is_array($rsqlquery) ) {

$this->setdbpagebreak($rsqlquery, $userpagerowsnum);

}

else {

$this->setarraypagebreak($rsqlquery, $userpagerowsnum);

}

}

// 设置数据库型分页

private function setdbpagebreak(&$rsqlquery, $userpagerowsnum='') {

$this->setdbtotalrowsnum($rsqlquery);

$this->settotalpagesnum($userpagerowsnum);

if( $this->mtotalpagesnum > 1 ) {

$this->setcurpagenumber();

$this->setsqlquery($rsqlquery);

$this->setquerystring();

$this->setindexbar();

$this->setpageinfo();

}

}

// 设置数组型分页

private function setarraypagebreak(&$rarray, $userpagerowsnum='', $usertotalrowsnum='') {

$this->setarraytotalrowsnum($rarray, $usertotalrowsnum);

$this->settotalpagesnum($userpagerowsnum);

if( $this->mtotalpagesnum > 1 ) {

$this->setcurpagenumber();

$this->setarray($rarray);

$this->setquerystring();

$this->setindexbar();

$this->setpageinfo();

}

}

// 数据库型计算总行数

private function setdbtotalrowsnum($rsqlquery) {

$this->mtotalrowsnum = mysql教程_num_rows( mysql_query($rsqlquery) );

}

// 数组型计算总行数

private function setarraytotalrowsnum($array) {

$this->mtotalrowsnum = count($array);

}

// 计算总页数

private function settotalpagesnum($userpagerowsnum='') {

if( $userpagerowsnum ) {

$this->mpagerowsnum = $userpagerowsnum;

}

$this->mtotalpagesnum = (int)( floor( ($this->mtotalrowsnum-1)/$this->mpagerowsnum )+1 );

}

// 计算当前页数

private function setcurpagenumber() {

if( $_get['cur_page'] ) {

$this->mcurpagenumber = $_get['cur_page'];

}

}

// 修正sql截取语句

private function setsqlquery(&$rsqlquery) {

$start_number = ($this->mcurpagenumber-1)*$this->mpagerowsnum;

$rsqlquery .= " limit ".$start_number.",".$this->mpagerowsnum;

}

// 修正截取后的array

private function setarray(&$rarray) {

$start_number = ($this->mcurpagenumber-1)*$this->mpagerowsnum;

$rarray = array_slice($rarray, $start_number, $this->mpagerowsnum);

}

// 修正 $_get 传递数据

private function setquerystring() {

$query_string = $_server['query_string'];

if ( $query_string == '' ) {

$this->mquerystring = "?cur_page=";

}

else {

$this->mquerystring = preg_replace("/&?cur_page=d+/", '', $query_string);

$this->mquerystring = "?".$this->mquerystring."&cur_page=";

}

}

// 设置页码索引条

private function getpageindex() {

if( $this->mtotalpagesnum <= $this->mindexbarlength ) {

$first_number = 1;

$last_number = $this->mtotalpagesnum;

}

else {

$offset = (int)floor($this->mindexbarlength/2);

if( ($this->mcurpagenumber-$offset) <= 1 ) {

$first_number = 1;

}

elseif( ($this->mcurpagenumber+$offset) > $this->mtotalpagesnum ) {

$first_number = $this->mtotalpagesnum-$this->mindexbarlength+1;

}

else {

$first_number = $this->mcurpagenumber-$offset;

}

$last_number = $first_number+$this->mindexbarlength-1;

}

$last_number;

for( $i=$first_number; $i<=$last_number; $i++ ) {

if( $this->mcurpagenumber == $i ) {

$page_index .= "".$i." ";

}

else {

$page_index .= "".$i." ";

}

}

return $page_index;

}

// 设置页码索引条

private function setindexbar() {

$this->mindexbar = $this->getnavfirstbutton();

$this->mindexbar .= $this->getnavprebutton();

$this->mindexbar .= $this->getpageindex();

$this->mindexbar .= $this->getnavnextbutton();

$this->mindexbar .= $this->getnavlastbutton();

}

// 得到页码索引条 首页按钮

private function getnavfirstbutton() {

return "".$this->mfirstbutton." ";

}

// 得到页码索引条 上一页按钮

private function getnavprebutton() {

if( $this->mcurpagenumber>1 ) {

$pre_number = $this->mcurpagenumber-1;

}

else {

$pre_number = 1;

}

return "".$this->mprebutton." ";

}

// 得到页码索引条 下一页按钮

private function getnavnextbutton() {

if( $this->mcurpagenumbermtotalpagesnum ) {

$next_number = $this->mcurpagenumber+1;

}

else {

$next_number = $this->mtotalpagesnum;

}

return "".$this->mnextbutton." ";

}

// 得到页码索引条 末页按钮

private function getnavlastbutton() {

return "".$this->mlastbutton." ";

}

// 设置分页信息

private function setpageinfo() {

$this->mpageinfo ="";

$this->mpageinfo .= "共 ".$this->mtotalrowsnum." 条信息 | ";

$this->mpageinfo .= "".$this->mpagerowsnum." 条/页 | ";

$this->mpageinfo .= "共 ".$this->mtotalpagesnum." 页 | ";

$this->mpageinfo .= "第 ".$this->mcurpagenumber." 页";

$this->mpageinfo .= "";

}

// 取出页码索引条

public function getindexbar() {

return $this->mindexbar;

}

// 取出分页信息

public function getpageinfo() {

return $this->mpageinfo;

}

}

?>

[/php]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值