<?php
/**
+--------------------------------------------
php分页类
创建时间 2010.11.12
使用方法:
$page = new Pages(
此处传递必须参数 数据总数,
以下为可选参数可以不写 依次为:
$每页展示数量默认10,
$分页样式,
$是否自动写入分页样式 1 代表自动]
);
$p1->firstpage(); //首页展示方法 | $p1->prepage(); //上一页展示
$p1->nextpage(); //下一页 | $p1->lastpage(); //最后一页
$p1->skip_page(); //跳转页 | $p1->more_page(); //中间过渡页
**
$p1->limit 为一个数组 $limit['a'] 是sql 语句limit 所需的前面的数值 $limit['b'] 是后面的值
可以通过对象直接访问获得
**
+--------------------------------------------
**/
class Pages{ private $total_rows; //数据总数
private $every_page_show = 10; //每一页展示数量
private $curren_pagename; //当前页面名称
public $limit; //以数组的形式返回 sql 语句必须的limit值 $limit[a] - 代表前面的值 $limit[b] - 代表后面的值
private $total_pages; //页码总数
//style 代表了分页的样式
private $style = '<style>
.pages_norame {display:bolck; width:auto; height:20px; float:left; padding-left:5px; padding-right:5px; font-family:Arial, Helvetica, sans-serif; font-size:12px; border-top:1px solid #999; border-left:1px solid #999; border-bottom:1px solid #CCC; border-right:1px solid #CCC; line-height:20px; text-decoration:none; margin-right:6px; color:#666;}
.pages_norame:hover{background-color:#F0F4F6; color:#000;}
.pages_select_nename{font-family:Arial, Helvetica, sans-serif; font-size:12px; float:left;}
.pages_bold{font-weight:bold; background-color:#F0F4F6;}
</style>';
/* 分页语言定义 公有类型 可以在对象的基础上访问进行修饰 */
public $lang = array('FirstPage' => '首页',
'PrePage' => '上一页',
'NextPage' => '下一页',
'LastPage' => '尾页'
);
/* 定义url参数的保持变量 */
private $url_get;
/*
类的函数定义
1 构造函数
*/
function pages($total_rows,$every_page_show=10,$style='default',$style_auto_print=1){
$this->total_rows = $total_rows;
$this->every_page_show = $every_page_show;
/* 分页样式更改设置 */
if($style != 'default'){
$this->style = $style;
}
/* 计算总计页码数 */
$this->total_pages = ceil($this->total_rows/$this->every_page_show);
/* 检查当前页码不能小于1 不能大于 最大页码 */
if(!isset($_GET['pages_id'])){
$_GET['pages_id'] = 1;
}else{
$_GET['pages_id'] = intval($_GET['pages_id']);
}
if($_GET['pages_id'] < 1){
$_GET['pages_id'] = 1;
}
if($_GET['pages_id'] > $this->total_pages){
$_GET['pages_id'] = $this->total_pages;
}
/* 计算sql 语句必须的2个数值 */
$this->limit['a'] = ($_GET['pages_id']-1)*$this->every_page_show;
$this->limit['b'] = $this->every_page_show;
/* 获得调用本类的页面名称 */
$page_arr = explode('/',$_SERVER['PHP_SELF']);
$this->curren_pagename = end($page_arr);
/* 获得页面的url参数并保持到页码 */
if(count($_GET) >= 1){
foreach($_GET as $key=>$values){
if($key !== 'pages_id'){
$this->url_get .= '&'.$key.'='.$values;
}
}
}
/* 根据参数 $style_auto_print 自动输出样式 */
if($style_auto_print == 1){
$this->style_write();
}
}
/**
+-------------------------------------------------
以下代码使用方法直接输出页面展示
包含样式的输出
+-------------------------------------------------
**/
/* 定义首页展示方法 */
function style_write(){
echo $this->style;
}
function firstpage(){
echo '<a href="'.$this->curren_pagename.'?pages_id=1'.$this->url_get.'" class="pages_norame">'.$this->lang['FirstPage'].'</a>';
}
/* 定义上一页展示方法 */
function prepage(){
echo '<a href="'.$this->curren_pagename.'?pages_id='.($_GET['pages_id']-1).$this->url_get.'" class="pages_norame">'.$this->lang['PrePage'].'</a>';
}
/* 定义下一页展示方法 */
function nextpage(){
echo '<a href="'.$this->curren_pagename.'?pages_id='.($_GET['pages_id']+1).$this->url_get.'" class="pages_norame">'.$this->lang['NextPage'].'</a>';
}
/* 定义尾页展示方法 */
function lastpage(){
echo '<a href="'.$this->curren_pagename.'?pages_id='.$this->total_pages.$this->url_get.'" class="pages_norame">'.$this->lang['LastPage'].'</a>';
}
/* 定义跳转方法 */
function skip_page(){
echo '
<script>
function skip_pages_norename(pid){
location.href="'.$this->curren_pagename.'?pages_id="+pid+"'.$this->url_get.'";
}
</script>
<select class="pages_select_nename" onchange="skip_pages_norename(this.value)">
';
for($i = 1; $i <= $this->total_pages; $i++){
echo '<option value="'.$i.'"';
if($i == $_GET['pages_id']){echo ' selected="selected"';}
echo '>第'.$i.'页</option>
';
}
echo '</select>';
}
/* 中间过渡页方法 */
function more_page(){
//当前页前3页展示
$i = $_GET['pages_id']-3;
if($i < 1){$i = 1;}
for($i; $i > 0; $i++){
if($i >= $_GET['pages_id']){break;}
echo '<a href="'.$this->curren_pagename.'?pages_id='.$i.$this->url_get.'" class="pages_norame">'.$i.'</a>
';
}
//展示当前页
echo '<a href="'.$this->curren_pagename.'?pages_id='.$_GET['pages_id'].$this->url_get.'" class="pages_norame pages_bold">'.$_GET['pages_id'].'</a>
';
//展示当前页的后6页
if($_GET['pages_id'] <= 3){
$sets = 10-$_GET['pages_id'];
}else{
$sets = 6;
}
for($i = $_GET['pages_id']+1; $i <= ($_GET['pages_id']+$sets); $i++){
if($i > $this->total_pages){break;}
echo '<a href="'.$this->curren_pagename.'?pages_id='.$i.$this->url_get.'" class="pages_norame">'.$i.'</a>
';
}
}
/* class end */
}
?>
/**
+--------------------------------------------
php分页类
创建时间 2010.11.12
使用方法:
$page = new Pages(
此处传递必须参数 数据总数,
以下为可选参数可以不写 依次为:
$每页展示数量默认10,
$分页样式,
$是否自动写入分页样式 1 代表自动]
);
$p1->firstpage(); //首页展示方法 | $p1->prepage(); //上一页展示
$p1->nextpage(); //下一页 | $p1->lastpage(); //最后一页
$p1->skip_page(); //跳转页 | $p1->more_page(); //中间过渡页
**
$p1->limit 为一个数组 $limit['a'] 是sql 语句limit 所需的前面的数值 $limit['b'] 是后面的值
可以通过对象直接访问获得
**
+--------------------------------------------
**/
class Pages{ private $total_rows; //数据总数
private $every_page_show = 10; //每一页展示数量
private $curren_pagename; //当前页面名称
public $limit; //以数组的形式返回 sql 语句必须的limit值 $limit[a] - 代表前面的值 $limit[b] - 代表后面的值
private $total_pages; //页码总数
//style 代表了分页的样式
private $style = '<style>
.pages_norame {display:bolck; width:auto; height:20px; float:left; padding-left:5px; padding-right:5px; font-family:Arial, Helvetica, sans-serif; font-size:12px; border-top:1px solid #999; border-left:1px solid #999; border-bottom:1px solid #CCC; border-right:1px solid #CCC; line-height:20px; text-decoration:none; margin-right:6px; color:#666;}
.pages_norame:hover{background-color:#F0F4F6; color:#000;}
.pages_select_nename{font-family:Arial, Helvetica, sans-serif; font-size:12px; float:left;}
.pages_bold{font-weight:bold; background-color:#F0F4F6;}
</style>';
/* 分页语言定义 公有类型 可以在对象的基础上访问进行修饰 */
public $lang = array('FirstPage' => '首页',
'PrePage' => '上一页',
'NextPage' => '下一页',
'LastPage' => '尾页'
);
/* 定义url参数的保持变量 */
private $url_get;
/*
类的函数定义
1 构造函数
*/
function pages($total_rows,$every_page_show=10,$style='default',$style_auto_print=1){
$this->total_rows = $total_rows;
$this->every_page_show = $every_page_show;
/* 分页样式更改设置 */
if($style != 'default'){
$this->style = $style;
}
/* 计算总计页码数 */
$this->total_pages = ceil($this->total_rows/$this->every_page_show);
/* 检查当前页码不能小于1 不能大于 最大页码 */
if(!isset($_GET['pages_id'])){
$_GET['pages_id'] = 1;
}else{
$_GET['pages_id'] = intval($_GET['pages_id']);
}
if($_GET['pages_id'] < 1){
$_GET['pages_id'] = 1;
}
if($_GET['pages_id'] > $this->total_pages){
$_GET['pages_id'] = $this->total_pages;
}
/* 计算sql 语句必须的2个数值 */
$this->limit['a'] = ($_GET['pages_id']-1)*$this->every_page_show;
$this->limit['b'] = $this->every_page_show;
/* 获得调用本类的页面名称 */
$page_arr = explode('/',$_SERVER['PHP_SELF']);
$this->curren_pagename = end($page_arr);
/* 获得页面的url参数并保持到页码 */
if(count($_GET) >= 1){
foreach($_GET as $key=>$values){
if($key !== 'pages_id'){
$this->url_get .= '&'.$key.'='.$values;
}
}
}
/* 根据参数 $style_auto_print 自动输出样式 */
if($style_auto_print == 1){
$this->style_write();
}
}
/**
+-------------------------------------------------
以下代码使用方法直接输出页面展示
包含样式的输出
+-------------------------------------------------
**/
/* 定义首页展示方法 */
function style_write(){
echo $this->style;
}
function firstpage(){
echo '<a href="'.$this->curren_pagename.'?pages_id=1'.$this->url_get.'" class="pages_norame">'.$this->lang['FirstPage'].'</a>';
}
/* 定义上一页展示方法 */
function prepage(){
echo '<a href="'.$this->curren_pagename.'?pages_id='.($_GET['pages_id']-1).$this->url_get.'" class="pages_norame">'.$this->lang['PrePage'].'</a>';
}
/* 定义下一页展示方法 */
function nextpage(){
echo '<a href="'.$this->curren_pagename.'?pages_id='.($_GET['pages_id']+1).$this->url_get.'" class="pages_norame">'.$this->lang['NextPage'].'</a>';
}
/* 定义尾页展示方法 */
function lastpage(){
echo '<a href="'.$this->curren_pagename.'?pages_id='.$this->total_pages.$this->url_get.'" class="pages_norame">'.$this->lang['LastPage'].'</a>';
}
/* 定义跳转方法 */
function skip_page(){
echo '
<script>
function skip_pages_norename(pid){
location.href="'.$this->curren_pagename.'?pages_id="+pid+"'.$this->url_get.'";
}
</script>
<select class="pages_select_nename" onchange="skip_pages_norename(this.value)">
';
for($i = 1; $i <= $this->total_pages; $i++){
echo '<option value="'.$i.'"';
if($i == $_GET['pages_id']){echo ' selected="selected"';}
echo '>第'.$i.'页</option>
';
}
echo '</select>';
}
/* 中间过渡页方法 */
function more_page(){
//当前页前3页展示
$i = $_GET['pages_id']-3;
if($i < 1){$i = 1;}
for($i; $i > 0; $i++){
if($i >= $_GET['pages_id']){break;}
echo '<a href="'.$this->curren_pagename.'?pages_id='.$i.$this->url_get.'" class="pages_norame">'.$i.'</a>
';
}
//展示当前页
echo '<a href="'.$this->curren_pagename.'?pages_id='.$_GET['pages_id'].$this->url_get.'" class="pages_norame pages_bold">'.$_GET['pages_id'].'</a>
';
//展示当前页的后6页
if($_GET['pages_id'] <= 3){
$sets = 10-$_GET['pages_id'];
}else{
$sets = 6;
}
for($i = $_GET['pages_id']+1; $i <= ($_GET['pages_id']+$sets); $i++){
if($i > $this->total_pages){break;}
echo '<a href="'.$this->curren_pagename.'?pages_id='.$i.$this->url_get.'" class="pages_norame">'.$i.'</a>
';
}
}
/* class end */
}
?>
还有若是能分门别类的讲解,或是应用更新的技术如SSO等会更加不错!