您的位置:首页 > 编程语言 > PHP开发

【PHP】php 分页类

2012-07-09 22:03 369 查看
<?php
/*
* 分页类
*
* Author: DYmyw
* Email: dymayongwei@163.com
* Date: 2012/03/15
* Version: 1.0
*/
class Page{
private $count;					// 总条数
private $pagesize;				// 每页显示条数
private $pagecount;				// 总页数
private $pagetype;				// 显示的分页样式
private $currentpagenum;		// 当前页码
private $pagearg = "page";		// 分页参数名称
private $argstr = "";			// $_GET 参数字符串
public	$limit = "";			// SQL 语句 LIMIT 分页参数
public	$pagearg_arr = array( "[ « ]", "[ ‹ ]", "[ › ]", "[ » ]" );

// 构造函数
public function __construct( $count, $pagesize = 5, $pagetype = 1 ){
$this->count 	= intval( $count );
$this->pagesize	= intval( $pagesize );
$this->pagecount	= @ceil( $this->count / $this->pagesize );
$this->get_current_page_num();
$this->argstr	= $this->new_argstr();
$this->limit	= " LIMIT ". ( $this->currentpagenum - 1 ) * $this->pagesize .", ". $this->pagesize;
$this->pagesize = $pagesize;
}

// 获取当前页码
private function get_current_page_num(){
if ( isset( $_GET[$this->pagearg] ) ){
if ( $_GET[$this->pagearg] <= 0 ){
$this->currentpagenum = 1;
}elseif ( $_GET[$this->pagearg] > $this->pagecount ){
$this->currentpagenum = $this->pagecount;
}else{
$this->currentpagenum = $_GET[$this->pagearg];
}
}else {
$this->currentpagenum = 1;
}
}

// 整理传递参数
private function new_argstr(){
$get_arr = $_GET;
unset( $get_arr[$this->pagearg] );

if ( $get_arr ){
foreach ( $get_arr as $key => $val ){
// 防跨站攻击
$val = htmlspecialchars( $val );
$argstr .= $argstr ? "&$key=$val" : "?$key=$val";
}
$argstr .= "&$this->pagearg=";
}else {
$argstr = "?$this->pagearg=";
}

return $argstr;
}

// 显示分页
public function page_info(){
switch ( $this->pagetype ){
case 1:
return $this->page_css1();
break;
case 2:
return $this->page_css2();
break;
default:
return $this->page_css1();
break;
}
}

// 默认分页样式
private function page_css1(){
$page_css1_str = "";
$page_css1_str .= "共有记录:<span style='color:red;'>". $this->count ."</span> 条  ";
$page_css1_str .= "当前页次:<span style='color:red;'>". $this->currentpagenum ."</span> / <span style='color:red;'>". $this->pagecount ."</span> 页    ";
if ( $this->currentpagenum == 1 ){
$page_css1_str .= $this->pagearg_arr[0] ." ". $this->pagearg_arr[1] ." ";
$page_css1_str .= "<a href='". $this->argstr.( $this->currentpagenum + 1 ) ."' style='text-decoration:none;'>". $this->pagearg_arr[2] ."</a> ";
$page_css1_str .= "<a href='". $this->argstr.$this->pagecount ."' style='text-decoration:none;'>". $this->pagearg_arr[3] ."</a>    ";
}elseif ( $this->currentpagenum == $this->pagecount ){
$page_css1_str .= "<a href='". $this->argstr ."1' style='text-decoration:none;'>". $this->pagearg_arr[0] ."</a> ";
$page_css1_str .= "<a href='". $this->argstr.( $this->currentpagenum - 1 ) ."' style='text-decoration:none;'>". $this->pagearg_arr[1] ."</a> ";
$page_css1_str .= $this->pagearg_arr[2] ." ". $this->pagearg_arr[3] ."    ";
}else {
$page_css1_str .= "<a href='". $this->argstr ."1' style='text-decoration:none;'>". $this->pagearg_arr[0] ."</a> ";
$page_css1_str .= "<a href='". $this->argstr.( $this->currentpagenum - 1 ) ."' style='text-decoration:none;'>". $this->pagearg_arr[1] ."</a> ";
$page_css1_str .= "<a href='". $this->argstr.( $this->currentpagenum + 1 ) ."' style='text-decoration:none;'>". $this->pagearg_arr[2] ."</a> ";
$page_css1_str .= "<a href='". $this->argstr.$this->pagecount ."' style='text-decoration:none;'>". $this->pagearg_arr[3] ."</a>    ";
}

$page_css1_str .= "转到:<select onChange='location.href=this.value;'>";
for ( $i=1; $i<=$this->pagecount; $i++ ){
if ( $this->currentpagenum == $i ){
$page_css1_str .= "<option value='". $this->argstr.$i ."' selected='selected'>第". $i ."页</option>";
}else {
$page_css1_str .= "<option value='". $this->argstr.$i ."'>第". $i ."页</option>";
}
}
$page_css1_str .= "</select>";
return $page_css1_str;
}

// 析构函数
public function __destruct(){
unset($this->count);
unset($this->pagesize);
unset($this->pagecount);
unset($this->pagetype);
unset($this->currentpagenum);
unset($this->pagearg);
unset($this->argstr);
unset($this->limit);
}
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: