<?<span php
</span><span
<span session_start</span>(); <span
<span
class
</span><span Page{
</span><span
public
</span> <span
$page
</span>; <span
<span
public
</span> <span
$nextPage
</span>; <span
<span
public
</span> <span
$prevPage
</span>; <span
<span
public
</span> <span
$pageMax
</span>; <span
<span
public
</span> <span
$startPage
</span>; <span
<span
public
</span> <span
$endPage
</span>; <span
<span
public
</span> <span
$style
</span>; <span
<span
public
</span> <span
$parameter
</span>;<span
<span
public
</span> <span
$varPage
</span>;<span
<span
public
</span> <span
$url
</span> = <span null</span>; <span
<span
protected
</span> <span
$config
</span> = <span
array
</span><span (
</span>
'header'
=>
'条记录'
,
'prev'
=>
'上一页'
,
'next'
=>
'下一页'
,
'first'
=>
'首页'
,
'last'
=>
'尾页'
,
'theme'
=>
'%records% %header% %page%/%pageMax% 页 %firstPage%%prevPage%%linkPage%%nextPage%%lastPage%'
<span
);
</span><span
</span>
<span
function
</span> __construct(<span
$records
</span>, <span
$pageSize
</span>, <span
$pageVal
</span> =
'p'
, <span
$parameter
</span> = <span null</span><span ){
</span><span
$this
</span>->records = <span
$records
</span><span ;
</span><span
$this
</span>->pageMax = <span
ceil
</span>(<span
$records
</span>/<span
$pageSize
</span><span );
</span><span
$this
</span>->page= <span max</span>(<span
intval
</span>(<span
$_GET
</span>[<span
$pageVal
</span>]), 1); <span
<span
$this
</span>->page = <span min</span>(<span
$this
</span>->page, <span
$this
</span>->pageMax); <span
<span
$this
</span>->nextPage = <span
$this
</span>->page + 1<span ;
</span><span
$this
</span>->prevPage = <span
$this
</span>->page - 1<span ;
</span><span
$this
</span>->varPage = <span
$pageVal
</span>; <span
<span
$this
</span>->parameter = <span
$parameter
</span>; <span
<span }
</span><span
</span>
<span
function
</span> setConfig(<span
$name
</span>, <span
$value
</span><span ){
</span><span
if
</span>(<span isset</span>(<span
$this
</span>->config[<span
$name
</span><span ])){
</span><span
$this
</span>->config[<span
$name
</span>] = <span
$value
</span><span ;
}
}
</span><span
</span>
<span
function
</span> show(<span
$length
</span>, <span
$hide
</span> = <span false</span><span ){
</span><span
if
</span>(0 == <span
$this
</span>->records) <span
return
</span>
''
<span ;
</span><span
empty
</span>(<span
$this
</span>->url)? <span
$this
</span>->url = <span
$_SERVER
</span>[
'REQUEST_URI'
] : <span null</span><span ;
</span><span
$url
</span> = <span
$this
</span>->url.(<span
strpos
</span>(<span
$this
</span>->url,
'?'
)?
''
:
'?'
).<span
$this
</span>-><span parameter;
</span><span
$parse
</span> = <span
parse_url
</span>(<span
$url
</span><span );
</span><span
if
</span>(<span isset</span>(<span
$parse
</span>[
'query'
<span ])){
</span><span
parse_str
</span>(<span
$parse
</span>[
'query'
],<span
$params
</span><span );
</span><span unset</span>(<span
$params
</span>[<span
$this
</span>-><span varPage]);
</span><span
$url
</span> = <span
$parse
</span>[
'path'
].
'?'
.<span http_build_query</span>(<span
$params
</span><span );
}
</span><span
if
</span>(
'mid'
== <span
$this
</span>->style){ <span
<span
if
</span>(<span
$length
</span> % 2 != 0<span ){
</span><span
$midder
</span> = <span
ceil
</span>(<span
$length
</span> / 2<span );
</span><span
$big_repair
</span> = <span
$midder
</span> - 1 ;<span
}<span
else
</span><span {
</span><span
$big_repair
</span> = <span
$midder
</span> = <span
$length
</span> / 2<span ;
}
</span><span
$sml_repair
</span> = <span
$midder
</span>- 1; <span
<span
$this
</span>->startPage = (<span
$this
</span>->page + <span
$midder
</span>) > <span
$this
</span>->pageMax ? <span
$this
</span>->pageMax - <span
$length
</span> : <span
$this
</span>->page - <span
$sml_repair
</span><span ;
</span><span
$this
</span>->endPage = (<span
$this
</span>->page < <span
$midder
</span>)? <span
$length
</span> : <span
$this
</span>->page + <span
$big_repair
</span><span ;
}</span><span
else
</span>{ <span
<span
$this
</span>->startPage = (<span
$this
</span>->page >= <span
$length
</span>)? <span
$_SESSION
</span>[
'startPage'
] : 1<span ;
</span><span
$this
</span>->endPage = <span
$this
</span>->startPage + <span
$length
</span> - 1<span ;
</span><span
$this
</span>->lastPage = <span isset</span>(<span
$_SESSION
</span>[
'lastPage'
])? <span
$_SESSION
</span>[
'lastPage'
] : 1; <span
<span
$_SESSION
</span>[
'lastPage'
] = <span
$this
</span>->page; <span
<span
if
</span>(<span
$this
</span>->lastPage < <span
$this
</span>->page){ <span
<span
if
</span>(<span
$this
</span>->page >= <span
$this
</span>-><span endPage){
</span><span
$this
</span>->startPage = <span
$_SESSION
</span>[
'startPage'
] = <span
$this
</span>-><span page;
</span><span
$this
</span>->endPage = <span
$this
</span>->startPage + <span
$length
</span> -1<span ;
}
}</span><span
elseif
</span>(<span
$this
</span>->lastPage == <span
$this
</span>->page){<span
<span
if
</span>(<span
$this
</span>->page == <span
$this
</span>-><span endPage){
</span><span
$this
</span>->startPage = <span
$_SESSION
</span>[
'startPage'
] = <span
$this
</span>-><span page;
</span><span
$this
</span>->endPage = <span
$this
</span>->startPage + <span
$length
</span> -1<span ;
}</span><span
else
</span><span {
</span><span
$this
</span>->startPage = <span
$_SESSION
</span>[
'startPage'
] = <span
$this
</span>->page - <span
$length
</span> + 1<span ;
</span><span
$this
</span>->endPage = <span
$this
</span>->startPage + <span
$length
</span> -1<span ;
}
}</span><span
else
</span>{<span
<span
if
</span>(<span
$this
</span>->page == <span
$this
</span>-><span startPage ){
</span><span
$this
</span>->startPage = <span
$_SESSION
</span>[
'startPage'
] = <span
$this
</span>->page - <span
$length
</span> + 1<span ;
</span><span
$this
</span>->endPage = <span
$this
</span>->startPage + <span
$length
</span> -1<span ;
}
}
</span><span
<span }
</span><span
<span
$this
</span>->startPage = <span min</span>(<span
$this
</span>->pageMax - <span
$length
</span> + 1, <span
$this
</span>->startPage); <span
<span
$this
</span>->startPage = <span max</span>(<span
$this
</span>->startPage, 1);<span
<span
$this
</span>->endPage = <span
$this
</span>->startPage + <span
$length
</span> -1<span ;
</span><span
$this
</span>->endPage = <span min</span>(<span
$this
</span>->pageMax, <span
$this
</span>->endPage); <span
<span
$_SESSION
</span>[
'startPage'
] = <span
$this
</span>->startPage; <span
<span
if
</span>(<span
$this
</span>->page <= 1){<span
<span
$firstPage
</span> =
'<span>'
.<span
$this
</span>->config[
'first'
].
'</span>'
<span ;
</span><span
$prevPage
</span> =
'<span>'
.<span
$this
</span>->config[
'prev'
].
'</span>'
<span ;
}</span><span
else
</span><span {
</span><span
$firstPage
</span> =
"<span><a href='<span $url</span>&<span $this</span>->varPage=1'>"
.<span
$this
</span>->config[
'first'
].
'</a>'
<span ;
</span><span
$prevPage
</span> =
"<span><a href='<span $url</span>&<span $this</span>->varPage=<span $this</span>->prevPage'>"
.<span
$this
</span>->config[
'prev'
].
'</a>'
<span ;
}
</span><span
if
</span>(<span
$this
</span>->page >= <span
$this
</span>->pageMax){ <span
<span
$nextPage
</span> =
'<span>'
.<span
$this
</span>->config[
'next'
].
'</span>'
<span ;
</span><span
$lastPage
</span> =
'<span>'
.<span
$this
</span>->config[
'last'
].
'</span>'
<span ;
}</span><span
else
</span><span {
</span><span
$lastPage
</span> =
"<a href='<span $url</span>&<span $this</span>->varPage=<span $this</span>->pageMax'>"
.<span
$this
</span>->config[
'last'
].
'</a>'
<span ;
</span><span
$nextPage
</span> =
"<a href='<span $url</span>&<span $this</span>->varPage=<span $this</span>->nextPage'>"
.<span
$this
</span>->config[
'next'
].
'</a>'
<span ;
}
</span><span
if
</span>(<span
$hide
</span>){ <span
(<span
$this
</span>->nextPage >= <span
$this
</span>->pageMax)? <span
$nextPage
</span> =
''
: <span null</span><span ;
(</span><span
$this
</span>->prevPage < 1)? <span
$prevPage
</span> =
''
: <span null</span><span ;
}
</span><span
for
</span>(<span
$i
</span> = <span
$this
</span>->startPage; <span
$i
</span> <= <span
$this
</span>->endPage; <span
$i
</span>++<span ){
</span><span
if
</span> (<span
$this
</span>->page == <span
$i
</span><span )
</span><span
$linkPage
</span> .=
"<a class='current' href='<span $url</span>&<span $this</span>->varPage=<span $i</span>'><span $i</span></a>"
<span ;
</span><span
else
</span>
<span
$linkPage
</span> .=
"<a href='<span $url</span>&<span $this</span>->varPage=<span $i</span>'><span $i</span></a>"
<span ;
}
</span><span
$search
</span> = <span
array
</span>(
'%records%'
,
'%header%'
,
'%page%'
,
'%pageMax%'
,
'%firstPage%'
,
'%prevPage%'
,
'%linkPage%'
,
'%nextPage%'
,
'%lastPage%'
<span );
</span><span
$replace
</span> = <span
array
</span>(<span
$this
</span>->records,<span
$this
</span>->config[
'header'
],<span
$this
</span>->page,<span
$this
</span>->pageMax,<span
$firstPage
</span>,<span
$prevPage
</span>,<span
$linkPage
</span>,<span
$nextPage
</span>,<span
$lastPage
</span><span );
</span><span
$pageStr
</span> = <span
str_replace
</span>(<span
$search
</span>, <span
$replace
</span>, <span
$this
</span>->config[
'theme'
<span ]);
</span><span
return
</span> <span
$pageStr
</span><span ;
}
}
</span><span
$page
</span> = <span
new
</span> Page(340, 10<span );
</span><span
$theme
</span> =
'%records% %header% %page%/%pageMax% 页 %firstPage%%prevPage%%linkPage%%nextPage%%lastPage%'
<span ;
</span><span
$page
</span>->setConfig(
'theme'
,<span
$theme
</span>); <span
<span
$page
</span>->setConfig(
'last'
,
'末页'
); <span
<span
$page
</span>->url =
'http://localhost/test.php'
<span ;
</span><span
echo
</span> <span
$page
</span>->show(10<span );
</span>?>
<style><span
a</span>,span{ margin:<span 2px 5px;}
</span>.<span current</span>{ color:<span red;}
</span></style>