<?php
namespace
Org\Util;
class
AjaxPage {
// 分頁(yè)欄每頁(yè)顯示的頁(yè)數(shù)
public
$rollPage
= 5;
// 頁(yè)數(shù)跳轉(zhuǎn)時(shí)要帶的參數(shù)
public
$parameter
;
// 默認(rèn)列表每頁(yè)顯示行數(shù)
public
$listRows
= 20;
// 起始行數(shù)
public
$firstRow
;
// 分頁(yè)總頁(yè)面數(shù)
protected
$totalPages
;
// 總行數(shù)
protected
$totalRows
;
// 當(dāng)前頁(yè)數(shù)
protected
$nowPage
;
// 分頁(yè)的欄的總頁(yè)數(shù)
protected
$coolPages
;
// 分頁(yè)顯示定制
protected
$config
=
array
(
'header'
=>
'條記錄'
,
'prev'
=>
'上一頁(yè)'
,
'next'
=>
'下一頁(yè)'
,
'first'
=>
'第一頁(yè)'
,
'last'
=>
'最后一頁(yè)'
,
'theme'
=>
' %totalRow% %header% %nowPage%/%totalPage% 頁(yè) %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'
);
// 默認(rèn)分頁(yè)變量名
protected
$varPage
;
public
function
__construct(
$totalRows
,
$listRows
=
''
,
$ajax_func
,
$parameter
=
''
) {
$this
->totalRows =
$totalRows
;
$this
->ajax_func =
$ajax_func
;
$this
->parameter =
$parameter
;
$this
->varPage = C(
'VAR_PAGE'
) ? C(
'VAR_PAGE'
) :
'p'
;
if
(!
empty
(
$listRows
)) {
$this
->listRows =
intval
(
$listRows
);
}
$this
->totalPages =
ceil
(
$this
->totalRows/
$this
->listRows);
//總頁(yè)數(shù)
$this
->coolPages =
ceil
(
$this
->totalPages/
$this
->rollPage);
$this
->nowPage = !
empty
(
$_GET
[
$this
->varPage])?
intval
(
$_GET
[
$this
->varPage]):1;
if
(!
empty
(
$this
->totalPages) &&
$this
->nowPage>
$this
->totalPages) {
$this
->nowPage =
$this
->totalPages;
}
$this
->firstRow =
$this
->listRows*(
$this
->nowPage-1);
}
public
function
setConfig(
$name
,
$value
) {
if
(isset(
$this
->config[
$name
])) {
$this
->config[
$name
] =
$value
;
}
}
public
function
show() {
if
(0 ==
$this
->totalRows)
return
''
;
$p
=
$this
->varPage;
$nowCoolPage
=
ceil
(
$this
->nowPage/
$this
->rollPage);
$url
=
$_SERVER
[
'REQUEST_URI'
].(
strpos
(
$_SERVER
[
'REQUEST_URI'
],
'?'
)?
''
:
"?"
).
$this
->parameter;
$parse
=
parse_url
(
$url
);
if
(isset(
$parse
[
'query'
])) {
parse_str
(
$parse
[
'query'
],
$params
);
unset(
$params
[
$p
]);
$url
=
$parse
[
'path'
].
'?'
.http_build_query(
$params
);
}
//上下翻頁(yè)字符串
$upRow
=
$this
->nowPage-1;
$downRow
=
$this
->nowPage+1;
if
(
$upRow
>0){
$upPage
=
"<a id='big' href='javascript:"
.
$this
->ajax_func.
"("
.
$upRow
.
")'>"
.
$this
->config[
'prev'
].
"</a>"
;
}
else
{
$upPage
=
""
;
}
if
(
$downRow
<=
$this
->totalPages){
$downPage
=
"<a id='big' href='javascript:"
.
$this
->ajax_func.
"("
.
$downRow
.
")'>"
.
$this
->config[
'next'
].
"</a>"
;
}
else
{
$downPage
=
""
;
}
// << < > >>
if
(
$nowCoolPage
== 1){
$theFirst
=
""
;
$prePage
=
""
;
}
else
{
$preRow
=
$this
->nowPage-
$this
->rollPage;
$prePage
=
"<a id='big' href='javascript:"
.
$this
->ajax_func.
"("
.
$preRow
.
")'>上"
.
$this
->rollPage.
"頁(yè)</a>"
;
$theFirst
=
"<a id='big' href='javascript:"
.
$this
->ajax_func.
"(1)' >"
.
$this
->config[
'first'
].
"</a>"
;
}
if
(
$nowCoolPage
==
$this
->coolPages){
$nextPage
=
""
;
$theEnd
=
""
;
}
else
{
$nextRow
=
$this
->nowPage+
$this
->rollPage;
$theEndRow
=
$this
->totalPages;
$nextPage
=
"<a id='big' href='javascript:"
.
$this
->ajax_func.
"("
.
$nextRow
.
")' >下"
.
$this
->rollPage.
"頁(yè)</a>"
;
$theEnd
=
"<a id='big' href='javascript:"
.
$this
->ajax_func.
"("
.
$theEndRow
.
")' >"
.
$this
->config[
'last'
].
"</a>"
;
}
// 1 2 3 4 5
$linkPage
=
""
;
for
(
$i
=1;
$i
<=
$this
->rollPage;
$i
++){
$page
=(
$nowCoolPage
-1)*
$this
->rollPage+
$i
;
if
(
$page
!=
$this
->nowPage){
if
(
$page
<=
$this
->totalPages){
$linkPage
.=
" <a id='big' href='javascript:"
.
$this
->ajax_func.
"("
.
$page
.
")'> "
.
$page
.
" </a>"
;
}
else
{
break
;
}
}
else
{
if
(
$this
->totalPages != 1){
$linkPage
.=
" <span class='current'>"
.
$page
.
"</span>"
;
}
}
}
$pageStr
=
str_replace
(
array
(
'%header%'
,
'%nowPage%'
,
'%totalRow%'
,
'%totalPage%'
,
'%upPage%'
,
'%downPage%'
,
'%first%'
,
'%prePage%'
,
'%linkPage%'
,
'%nextPage%'
,
'%end%'
),
array
(
$this
->config[
'header'
],
$this
->nowPage,
$this
->totalRows,
$this
->totalPages,
$upPage
,
$downPage
,
$theFirst
,
$prePage
,
$linkPage
,
$nextPage
,
$theEnd
),
$this
->config[
'theme'
]);
return
$pageStr
;
}
}
?>
public
function
news(){
$credit
= M(
'news'
);
$count
=
$credit
->
count
();
//計(jì)算記錄數(shù)
$limitRows
= 5;
// 設(shè)置每頁(yè)記錄數(shù)
$p
=
new
\Org\Util\AjaxPage(
$count
,
$limitRows
,
"news"
);
//第三個(gè)參數(shù)是你需要調(diào)用換頁(yè)的ajax函數(shù)名
$limit_value
=
$p
->firstRow .
","
.
$p
->listRows;
$data
=
$credit
->order(
'news_id desc'
)->limit(
$limit_value
)->select();
// 查詢(xún)數(shù)據(jù)
$page
=
$p
->show();
// 產(chǎn)生分頁(yè)信息,AJAX的連接在此處生成
$this
->assign(
'list'
,
$data
);
$this
->assign(
'page'
,
$page
);
$this
->display(
'Ajax_news'
);
}
三.模板中代碼
<
html
>
<
head
>
<
title
>Ajax無(wú)刷新分頁(yè)</
title
>
<
script
type
=
"text/javascript"
src
=
"__PUBLIC__/Ajax_js/jquery-1.11.1.min.js"
></
script
>
<
script
type
=
"text/javascript"
>
function news(id){ //news函數(shù)名 一定要和action中的第三個(gè)參數(shù)一致上面有
var id = id;
$.get('{:U("Home/Index/news")}', {'p':id}, function(data){ //IndexAction中的用get方法發(fā)送信息到news方法,注意此處的鏈接
$("#news").replaceWith("<
div
id
=
'news'
>"+data+"</
div
>"); //news一定要和tpl中的一致
});
}
</
script
>
</
head
>
<
body
>
<
div
id
=
'news'
>
<!--這里的news和上面js中的news要一致-->
<
table
>
<
foreach
item
=
'v'
name
=
'list'
>
<
tr
><
td
>{$v.news_id}</
td
><
td
>{$v.news_title}</
td
></
tr
>
</
foreach
>
</
table
>
{$page}
</
div
>
</
body
>
</
html
>
聯(lián)系客服