本演示由三個文档組成, 放在同一目錄, 代碼如下:
index.php
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>----分頁演示-----</title> <link href="pager.css" type="text/css" rel="stylesheet" /> </head> <body> <?php include "pager.class.php"; $CurrentPage=isset($_GET['page'])?$_GET['page']:1; //die($CurrentPage); $myPage=new pager(1300,intval($CurrentPage)); $pageStr= $myPage->GetPagerContent(); echo $pageStr; // $myPage=new pager(90,intval($CurrentPage)); // $pageStr= $myPage->GetPagerContent(); // echo $pageStr; ?> </body> </html>
pager.css
body,html{padding:0px;margin:0px;color:#333333;font-family:"宋體",Arial,Lucida,Verdana,Helvetica,sans-serif;font-size:12px;line-height:150%;}
h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p,label{margin:0;padding:0;border:none;list-style-type:none;}
/**前台分頁樣式**/
.Pagination{margin:10px 0 0;padding:5px 0;height:20px;line-height:20px;font-family:Arial,Helvetica,sans-serif,"宋體";float:right;}
.Pagination a{margin-left:2px;padding:2px 7px 2px;display:block;float:left;line-height:18px;height:18px;}
.Pagination .dot{border:medium none;padding:4px 8px;float:left;}
.Pagination a:link,.Pagination a:visited{border:1px solid #dedede;color:#696969;text-decoration:none;}
.Pagination a:hover,.Pagination a:active,.Pagination a.current:link,.Pagination a.current:visited{border:1px solid #dedede;color:#fff;background-color:#ff6600;background-image:none;border:#ff6600 solid 1px;}
.Pagination .selectBar{border:#dedede solid 1px;font-size:12px;width:95px;height:21px;line-height:21px;margin-left:10px;display:inline}
.Pagination a.tips{_padding:4px 7px 1px;}
.tipsone{color:#000;background-color:#fff;float:left;background-image:none;border:#ff6600 solid 1px;line-height:22px;padding-right:5px;padding-left:5px;font-family:Arial,Helvetica,sans-serif,"宋體";margin-left:2px;}pager.class.php
<?php
/*
* PHP分頁類
* @package Page
* @Created 2013-03-27
* @Modify 2013-03-27
* @link http://www.wkwkk.com
* Example:
$myPage=new Pager(1300,intval($CurrentPage));
$pageStr= $myPage->GetPagerContent();
echo $pageStr;
*/
class Pager
{
private $pageSize = 10;
private $pageIndex;
private $totalNum;
private $totalPagesCount;
private $pageUrl;
private static $_instance;
public function __construct($p_totalNum, $p_pageIndex, $p_pageSize = 10, $p_initNum = 3, $p_initMaxNum = 5)
{
if (!isset($p_totalNum) || !isset($p_pageIndex)) {
die("pager initial error");
}
$this->totalNum = $p_totalNum;
$this->pageIndex = $p_pageIndex;
$this->pageSize = $p_pageSize;
$this->initNum = $p_initNum;
$this->initMaxNum = $p_initMaxNum;
$this->totalPagesCount = ceil($p_totalNum / $p_pageSize);
$this->pageUrl = $this->_getPageUrl();
$this->_initPagerLegal();
}
/**
* 獲取去除page部分的當前URL字符串
*
* @return String URL字符串
*/
private function _getPageUrl()
{
$CurrentUrl = $_SERVER["REQUEST_URI"];
$arrUrl = parse_url($CurrentUrl);
$urlQuery = $arrUrl["query"];
if ($urlQuery) {
$urlQuery = preg_replace("/(^|&)page=" . $this->pageIndex . "/", "", $urlQuery);
$CurrentUrl = str_replace($arrUrl["query"], $urlQuery, $CurrentUrl);
if ($urlQuery) {
$CurrentUrl .= "&page";
} else {
$CurrentUrl .= "page";
}
} else {
$CurrentUrl .= "?page";
}
return $CurrentUrl;
}
/*
*設置頁面參數合法性
*@return void
*/
private function _initPagerLegal()
{
if ((!is_numeric($this->pageIndex)) || $this->pageIndex < 1) {
$this->pageIndex = 1;
} elseif ($this->pageIndex > $this->totalPagesCount) {
$this->pageIndex = $this->totalPagesCount;
}
}
//$this->pageUrl}={$i}
//{$this->CurrentUrl}={$this->TotalPages}
public function GetPagerContent()
{
$str = "<div class=\"Pagination\">";
//首頁 上一頁
if ($this->pageIndex == 1) {
$str .= "<div class='tipsone'>首頁</div> " . "\n";
$str .= "<div class='tipsone'>上一頁</div> " . "\n" . "\n";
} else {
$str .= "<a href='{$this->pageUrl}=1' class='tips' title='首頁'>首頁</a> " . "\n";
$str .= "<a href='{$this->pageUrl}=" . ($this->pageIndex - 1) . "' class='tips' title='上一頁'>上一頁</a> " . "\n" . "\n";
}
/*
除首末後 頁面分頁邏輯
*/
//10頁(含)以下
$currnt = "";
if ($this->totalPagesCount <= 10) {
for ($i = 1; $i <= $this->totalPagesCount; $i++) {
if ($i == $this->pageIndex) {$currnt = " class='current'";} else { $currnt = "";}
$str .= "<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>" . "\n";
}
} else //10頁以上
{
if ($this->pageIndex < 3) //當前頁小於3
{
for ($i = 1; $i <= 3; $i++) {
if ($i == $this->pageIndex) {$currnt = " class='current'";} else { $currnt = "";}
$str .= "<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>" . "\n";
}
$str .= "<span class=\"dot\">……</span>" . "\n";
for ($i = $this->totalPagesCount - 3 + 1; $i <= $this->totalPagesCount; $i++) //功能1
{
$str .= "<a href='{$this->pageUrl}={$i}' >$i</a>" . "\n";
}
} elseif ($this->pageIndex <= 5) // 5 >= 當前頁 >= 3
{
for ($i = 1; $i <= ($this->pageIndex + 1); $i++) {
if ($i == $this->pageIndex) {$currnt = " class='current'";} else { $currnt = "";}
$str .= "<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>" . "\n";
}
$str .= "<span class=\"dot\">……</span>" . "\n";
for ($i = $this->totalPagesCount - 3 + 1; $i <= $this->totalPagesCount; $i++) //功能1
{
$str .= "<a href='{$this->pageUrl}={$i}' >$i</a>" . "\n";
}
} elseif (5 < $this->pageIndex && $this->pageIndex <= $this->totalPagesCount - 5) //當前頁大於5,同時小於總頁數-5
{
for ($i = 1; $i <= 3; $i++) {
$str .= "<a href='{$this->pageUrl}={$i}' >$i</a>" . "\n";
}
$str .= "<span class=\"dot\">……</span>";
for ($i = $this->pageIndex - 1; $i <= $this->pageIndex + 1 && $i <= $this->totalPagesCount - 5 + 1; $i++) {
if ($i == $this->pageIndex) {$currnt = " class='current'";} else { $currnt = "";}
$str .= "<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>" . "\n";
}
$str .= "<span class=\"dot\">……</span>";
for ($i = $this->totalPagesCount - 3 + 1; $i <= $this->totalPagesCount; $i++) {
$str .= "<a href='{$this->pageUrl}={$i}' >$i</a>" . "\n";
}
} else {
for ($i = 1; $i <= 3; $i++) {
$str .= "<a href='{$this->pageUrl}={$i}' >$i</a>" . "\n";
}
$str .= "<span class=\"dot\">……</span>" . "\n";
for ($i = $this->totalPagesCount - 5; $i <= $this->totalPagesCount; $i++) //功能1
{
if ($i == $this->pageIndex) {$currnt = " class='current'";} else { $currnt = "";}
$str .= "<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>" . "\n";
}
}
}
/*
除首末後 頁面分頁邏輯結束
*/
//下一頁 末頁
if ($this->pageIndex == $this->totalPagesCount) {
$str .= "\n" . "<div class='tipsone'>下一頁</div>" . "\n";
$str .= "<div class='tipsone'>末頁</div>" . "\n";
} else {
$str .= "\n" . "<a href='{$this->pageUrl}=" . ($this->pageIndex + 1) . "' class='tips' title='下一頁'>下一頁</a> " . "\n";
$str .= "<a href='{$this->pageUrl}={$this->totalPagesCount}' class='tips' title='末頁'>末頁</a> " . "\n";
}
$str .= "</div>";
return $str;
}
/**
* 獲得實例
* @return
*/
// static public function getInstance() {
// if (is_null ( self::$_instance )) {
// self::$_instance = new pager ();
// }
// return self::$_instance;
// }
}