【www.gdgbn.com--mysql教程】
php教程
/*
* 模板分页类,源于easp教程的数据库教程分页方法,算是easp分页的的php独立版
* 支持动态和静态分页方式
* * page([总记录数=1],[分页大小=20],[当前页=1],[显示页数=6],[分页参数="page"],[分页链接=当前页面],[是否静态=false])
* 动态:
* 简单用法:
* $page = new page(50);
* $page->setpager("zjj","共有{recordcount} 个商品 当前第 {pageindex} 页 / 共 {pagecount} 页 分页: {first}{prev} {list} {next}{last} 转到 {jump} 页",array("listlong"=>"6","first"=>"首页","last"=>"尾页","prev"=>"上一页","next"=>"下一页","list"=>"第*页","jump"=>"select"));
* echo $page->getpager("zjj");
* 全参数用法:
* $page = new page(50,20,1,6,"page","prrr.php",false);
* $page->setpager("zjj","共有{recordcount} 个商品 当前第 {pageindex} 页 / 共 {pagecount} 页 分页: {first}{prev} {list} {next}{last} 转到 {jump} 页",array("listlong"=>"6","first"=>"首页","last"=>"尾页","prev"=>"上一页","next"=>"下一页","list"=>"第*页","jump"=>"select"));
* echo $page->getpager("zjj");
* 静态:
* $page = new page(50,20,1,6,"page","prrr{page}.html",true);
* $page->setpager("zjj","共有{recordcount} 个商品 当前第 {pageindex} 页 / 共 {pagecount} 页 分页: {first}{prev} {list} {next}{last} 转到 {jump} 页",array("listlong"=>"6","first"=>"首页","last"=>"尾页","prev"=>"上一页","next"=>"下一页","list"=>"第*页","jump"=>"select"));
* echo $page->getpager("zjj");
*/
class page {
private $page_size; //每页显示的条目数
private $total_size; //总条目数
private $current_page; //当前被选中的页
private $sub_pages; //每次显示的页数
private $total_pages; //总页数
private $page_tpl = array (); // 分页模板
private $pageparam;
private $pagelink;
private $static;
function __construct($total_size = 1, $page_size = 20, $current_page = 1, $sub_pages = 6, $pageparam = "page", $pagelink = "", $static = false) {
$this->page_size = intval ( $page_size );
$this->total_size = intval ( $total_size );
if (! $current_page) {
$this->current_page = 1;
} else {
$this->current_page = intval ( $current_page );
}
$this->total_pages = ceil ( $total_size / $page_size );
$this->sub_pages = intval ( $sub_pages );
$this->pageparam = $pageparam;
$this->pagelink = (empty ( $pagelink ) ? $_server ["php_self"] : $pagelink);
$this->static = $static;
$this->page_tpl ["default"] = array ("tpl" => "{first}{prev}{liststart}{list}{listend}{next}{last} 跳转到{jump}页", "config" => array () );
}
public function __set($param, $value) {
$this->$param = $value;
}
public function __get($param) {
return $this->$param;
}
/*
__destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。
*/
function __destruct() {
unset ( $page_size ); //每页显示的条目数
unset ( $total_size ); //总条目数
unset ( $current_page ); //当前被选中的页
unset ( $sub_pages ); //每次显示的页数
unset ( $total_pages ); //总页数
unset ( $page_tpl ); // 分页模板
unset ( $pageparam ); //分页参数,默认page
unset ( $pagelink );
unset ( $static );
}
private function urlparameters($url = array()) {
foreach ( $url as $key => $val ) {
if ($key != $this->pageparam)
$arg [] = $key . "=" . $val;
}
$arg [] = $this->pageparam . "=*";
if ($this->static)
return str_replace ( "{page}", "*", $this->pagelink );
else
return $this->pagelink . "?" . implode ( "&", $arg );
}
public function setpager($tpl_name = "default", $tpl = "", $config = array()) {
if (empty ( $tpl ))
$tpl = $this->page_tpl ["default"] ["tpl"];
if (empty ( $config ))
$config = $this->page_tpl ["default"] ["config"];
$this->page_tpl [$tpl_name] = array ("tpl" => $tpl, "config" => $config );
}
public function getpager($tpl_name = "default") {
$this->getcurrentpage ();
return $this->pager ( $this->page_tpl [$tpl_name] );
}
public function getcurrentpage() {
$this->current_page = ($_get [$this->pageparam] <= intval ( $this->total_pages ) ? ($_get [$this->pageparam] < 1 ? 1 : $_get [$this->pageparam]) : intval ( $this->total_pages ));
}
public function pager($page_tpl = "") {
if (empty ( $page_tpl ))
$page_tpl = $this->page_tpl ["default"];
$cfg = array ("recordcount" => intval ( $this->total_size ), "pageindex" => intval ( $this->current_page ), "pagecount" => intval ( $this->total_pages ), "pagesize" => intval ( $this->page_size ), "listlong" => intval ( $this->sub_pages ), "listsidelong" => 2, "list" => "*", "currentclass" => "current", "link" => $this->urlparameters ( $_get ), "first" => "«", "prev" => "‹", "next" => "›", "last" => "»", "more" => "...", "disabledclass" => "disabled", "jump" => "input", "jumpplus" => "", "jumpaction" => "", "jumplong" => 50 );
if (! empty ( $page_tpl ["config"] )) {
foreach ( $page_tpl ["config"] as $key => $val ) {
if (array_key_exists ( $key, $cfg ))
$cfg [$key] = $val;
}
}
$tmps教程tr = $page_tpl ["tpl"];
$pstart = $cfg ["pageindex"] - (($cfg ["listlong"] / 2) + ($cfg ["listlong"] % 2)) + 1;
$pend = $cfg ["pageindex"] + $cfg ["listlong"] / 2;
if ($pstart < 1) {
$pstart = 1;
$pend = $cfg ["listlong"];
}
if ($pend > $cfg ["pagecount"]) {
$pstart = $cfg ["pagecount"] - $cfg ["listlong"] + 1;
$pend = $cfg ["pagecount"];
}
if ($pstart < 1)
$pstart = 1;
for($i = $pstart; $i <= $pend; $i ++) {
if ($i == $cfg ["pageindex"])
$plist .= "" . str_replace ( "*", $i, $cfg ["list"] ) . " ";
else
$plist .= " " . str_replace ( "*", $i, $cfg ["list"] ) . " ";
}
if ($cfg ["listsidelong"] > 0) {
if ($cfg ["listsidelong"] < $pstart) {
for($i = 1; $i <= $cfg ["listsidelong"]; $i ++) {
$pliststart .= "" . str_replace ( "*", $i, $cfg ["list"] ) . " ";
}
$pliststart .= ($cfg ["listsidelong"] + 1) == $pstart ? "" : $cfg ["more"] . " ";
} else {
if ($cfg ["listsidelong"] >= $pstart && $pstart > 1) {
for($i = 1; $i <= ($pstart - 1); $i ++) {
$pliststart .= "" . str_replace ( "*", $i, $cfg ["list"] ) . " ";
}
}
}
if (($cfg ["pagecount"] - $cfg ["listsidelong"]) > $pend) {
$plistend = " " . $cfg ["more"] . $plistend;
for($i = (($cfg ["pagecount"] - $cfg ["listsidelong"]) + 1); $i <= $cfg ["pagecount"]; $i ++) {
$plistend .= " " . str_replace ( "*", $i, $cfg ["list"] ) . " ";
}
} else {
if (($cfg ["pagecount"] - $cfg ["listsidelong"]) <= $pend && $pend < $cfg ["pagecount"]) {
for($i = ($pend + 1); $i <= $cfg ["pagecount"]; $i ++) {
$plistend .= " " . str_replace ( "*", $i, $cfg ["list"] ) . " ";
}
}
}
}
if ($cfg ["pageindex"] > 1) {
$pfirst = " " . $cfg ["first"] . " ";
$pprev = " " . $cfg ["prev"] . " ";
} else {
$pfirst = " " . $cfg ["first"] . " ";
$pprev = " " . $cfg ["prev"] . " ";
}
if ($cfg ["pageindex"] < $cfg ["pagecount"]) {
$plast = " " . $cfg ["last"] . " ";
$pnext = " " . $cfg ["next"] . " ";
} else {
$plast = " " . $cfg ["last"] . " ";
$pnext = " " . $cfg ["next"] . " ";
}
switch (strtolower ( $cfg ["jump"] )) {
case "input" :
$pjumpvalue = "this.value";
$pjump = " $pjump .= " onkeydown="网页特效:if(event.charcode==13||event.keycode==13){if(!isnan(" . $pjumpvalue . ")){";
$pjump .= ($cfg ["jumpaction"] == "" ? ((strtolower ( substr ( $cfg ["link"], 0, 11 ) ) == "javascript:") ? str_replace ( "*", $pjumpvalue, substr ( $cfg ["link"], 12 ) ) : " document.location.href="" . str_replace ( "*", ""+" . $pjumpvalue . "+"", $cfg ["link"] ) . "";") : str_replace ( "*", $pjumpvalue, $cfg ["jumpaction"] ));
$pjump .= "}return false;}" />";
break;
case "select" :
$pjumpvalue = "this.options[this.selectedindex].value";
$pjump = " $pjump .= ($cfg ["jumpaction"] == "" ? ((strtolower ( substr ( $cfg ["link"], 0, 11 ) ) == "javascript:") ? str_replace ( "*", $pjumpvalue, substr ( $cfg ["link"], 12 ) ) : " document.location.href="" . str_replace ( "*", ""+" . $pjumpvalue . "+"", $cfg ["link"] ) . "";") : str_replace ( "*", $pjumpvalue, $cfg ["jumpaction"] ));
$pjump .= "" title="请选择要跳转到的页数"> ";
if ($cfg ["jumplong"] == 0) {
for($i = 0; $i <= $cfg ["pagecount"]; $i ++) {
$pjump .= " ";
}
} else {
$pjumplong = intval ( $cfg ["jumplong"] / 2 );
$pjumpstart = ((($cfg ["pageindex"] - $pjumplong) < 1) ? 1 : ($cfg ["pageindex"] - $pjumplong));
$pjumpstart = ((($cfg ["pagecount"] - $cfg ["pageindex"]) < $pjumplong) ? ($pjumpstart - ($pjumplong - ($cfg ["pagecount"] - $cfg ["pageindex"])) + 1) : $pjumpstart);
$pjumpstart = (($pjumpstart < 1) ? 1 : $pjumpstart);
$j = 1;
for($i = $pjumpstart; $i <= $cfg ["pageindex"]; $i ++, $j ++) {
$pjump .= " ";
}
$pjumplong = $cfg ["pagecount"] - $cfg ["pageindex"] < $pjumplong ? $pjumplong : $pjumplong + ($pjumplong - $j) + 1;
$pjumpend = $cfg ["pageindex"] + $pjumplong > $cfg ["pagecount"] ? $cfg ["pagecount"] : $cfg ["pageindex"] + $pjumplong;
for($i = $cfg ["pageindex"] + 1; $i <= $pjumpend; $i ++) {
$pjump .= " ";
}
}
$pjump .= "";
break;
}
$patterns = array ("/{recordcount}/", "/{pagecount}/", "/{pageindex}/", "/{pagesize}/", "/{list}/", "/{liststart}/", "/{listend}/", "/{first}/", "/{prev}/", "/{next}/", "/{last}/", "/{jump}/" );
$replace = array ($cfg ["recordcount"], $cfg ["pagecount"], $cfg ["pageindex"], $cfg ["pagesize"], $plist, $pliststart, $plistend, $pfirst, $pprev, $pnext, $plast, $pjump );
$tmpstr = chr ( 13 ) . chr ( 10 ) . preg_replace ( $patterns, $replace, $tmpstr ) . chr ( 13 ) . chr ( 10 );
unset ( $cfg );
return $tmpstr;
}
}
?>