此文摘自小鱼小鱼加油吐泡泡 的博客园
要写分页,首先你得清楚,一页你想显示多少条信息?如何计算总共显示的页数?
先说一下思路:
(1)从数据库读取数据,以chenai表为例,读取所有留言信息。并能够实现输入发送者,可以查询该发送者的留言总数。
(2)计算分页信息,此处,以每页显示5条信息为例。分页列表(如图)以当前页为中心,向前显示2条,向后显示2条。
(3)给每个分页列表添加对应的点击事件。
(4)能够实现分页后,添加查询分页功能。
现实效果图:
第一步:引入 jquery文件和bootstrap文件。(因为表格和分页均是用的bootstrap)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!
DOCTYPE
html>
<
html
>
<
head
>
<
meta
charset="UTF-8">
<
title
></
title
>
<!--引入bootstrap的css文件-->
<
link
type="text/css" rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css" />
<!--引入js包-->
<
script
src="../jquery-3.2.0.js"></
script
>
<!--引入bootstrap的js文件-->
<
script
src="../bootstrap-3.3.7-dist/js/bootstrap.min.js"></
script
>
<
style
type="text/css">
/*给当前页添加特殊样式*/
.dqy{
font-weight: bolder;
}
</
style
>
</
head
>
|
第二步:从数据库读取数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<
body
>
<
h1
style="text-align: center;">分页查询</
h1
>
<
div
><
input
type="text" id="send"/><
input
type="button" id="chaxun" value="查询"/></
div
>
<!--用table显示留言信息-->
<
table
class="table table-striped">
<
thead
>
<
tr
>
<
th
>代号</
th
>
<
th
>发送者</
th
>
<
th
>接收者</
th
>
<
th
>时间</
th
>
<
th
>留言信息</
th
>
</
tr
>
</
thead
>
<
tbody
id="nr">
</
tbody
>
</
table
>
<!--造一个div显示分页信息-->
<
div
>
<
ul
class="pagination xinxi">
</
ul
>
</
div
>
</
body
>
</
html
>
|
第三步:写分页信息
(1)造方法
1
2
3
4
5
6
7
8
|
<script type=
"text/javascript"
>
//定义当前页,默认为1,不能为0
var
page = 1;
//定义每一页显示多少条留言信息
var
num = 5;
//造一个方法加载数据
Load();
//造一个方法加载分页信息
|
LoadFenYe();
(2)写方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
function
Load(){
var
send=$(
"#send"
).val();
$.ajax({
url:
"chuli.php"
,
data:{page:page,num:num,sender:send},
type:
"POST"
,
dataType:
"JSON"
,
success:
function
(data){
//因为要返回json数据,所以更改DB.class.php类文件,使其返回json数据
var
str =
""
;
//json遍历方式
for
(
var
k
in
data)
// alert(data[k].Ids);
{
str = str+
"<tr><td>"
+data[k].Ids+
"</td><td>"
+data[k].Sender+
"</td><td>"
+data[k].Receiver+
"</td><td>"
+data[k].Times+
"</td><td>"
+data[k].Comment+
"</td></tr>"
;
}
$(
"#nr"
).html(str);
}
});
}
//加载分页的方法
function
LoadFenYe(){
//定义一个变量,用来放所有的分页信息,默认为空
var
s =
""
;
var
send=$(
"#send"
).val();
//加载上一页
s =
"<span id='prev'>前一页</span>"
;
//加载中间的数字
var
zts=0;
//总的留言条数为0条
$.ajax({
async:
false
,
//必须取消异步,不然总条数为0,总页数也为0
url:
"tiaoshu-cl.php"
,
data:{sender:send},
type:
"POST"
,
dataType:
"TEXT"
,
success:
function
(data){
zts=data;
}
});
//总页数为总条数除以每一页显示的条数,如果为小数则向上取整
var
zys = Math.ceil(zts/num);
//已经知道总的页数后,开始显示分页信息
page = parseInt(page);
//转一下整型
// 当前页开始,向前显示2页,向后显示两页
for
(
var
i = page-2;i < page+3;i++)
{
//注意i的范围
if
(i>0 && i<=zys){
//如果i等于当前页,样式会不一样
if
(i==page){
s=s+
"<span ys='"
+i+
"' class='dqy'>"
+i+
"</span>"
;
//当前页
}
else
{
s=s+
"<span ys='"
+i+
"' class='qty'>"
+i+
"</span>"
;
//其他页
}
}
}
//加载后一页
s = s +
"<span id='next'>后一页</span>"
;
s =
"<li>"
+s+
"</li>"
;
$(
".xinxi"
).html(s);
|
第四步:添加点击事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//给前一页加点击事件
$(
"#prev"
).click(
function
(){
page = parseInt(page);
if
(page>1)
{
page--;
}
//重新加载数据
Load();
LoadFenYe();
})
//给中间页面添加点击事件
$(
".qty"
).click(
function
(){
page=parseInt($(
this
).attr(
"ys"
));
//取自定义的属性值
Load();
LoadFenYe();
})
//给后一页加点击事件
$(
"#next"
).click(
function
(){
page = parseInt(page);
if
(page<zys)
{
page++;
}
//重新加载数据
Load();
LoadFenYe();
})<br>}
//这是分页方法的另一半花括号
|
第五步:实现查询分页
1
2
3
4
|
$(
"#chaxun"
).click(
function
(){
Load();
LoadFenYe();
})
|
chuli.php页面
1
2
3
4
5
6
7
8
9
10
|
<?php
$page
=
$_POST
[
"page"
];
$num
=
$_POST
[
"num"
];
$sender
=
$_POST
[
"sender"
];
require
"../DB.class.php"
;
$db
=
new
DB();
$tgs
= (
$page
-1)*
$num
;
//跳过的条数
$sql
=
"select * from chenai where Sender like '%{$sender}%' limit {$tgs},{$num}"
;
echo
$db
->jsonquery(
$sql
);
?>
|
tiaoshu-cl.php页面
1
2
3
4
5
6
7
|
<?php
$sender
=
$_POST
[
"sender"
];
require
"../DB.class.php"
;
$db
=
new
DB();
$sql
=
"select count(*) from chenai where Sender like '%{$sender}%'"
;
echo
$db
->strquery(
$sql
);
?>
|