前言
这几天做项目因为数据太多,需要对信息进行上下翻页展示,就自己写了翻页的代码
大致功能就是页面只显示几条信息,按上一页、下一页切换内容,当显示第一页时上一页和首页选项不可选,当页面加载到最后一页时下一页和尾页选项不可选
具体效果如下:
实现代码
1)原生PHP方法
先说一下总思路吧,首先我们要查询所有符合条件需要进行分页的总数据,计算展示的总页数。
然后获取当前显示的是第几页信息,用当前页数每页数据条数表示为总数据的第几条,再根据限制条件查询出当前页所需显示出来的数据。将每一条数据echo替换HTML结构内容中,最后显示出来
关于分页的限制条件很简单,只要查询到当前页为第1页时,首页和上一页选项跳转链接都固定在第一页同时设置选项disabled不可选,尾页也是相同的步骤。
具体代码如下:
当前页cPage需要传过来,我的办法是初始cPage=0
list.php*
?
1
2
|
<a href= "listmore.php?cPage=0" rel= "external nofollow" rel= "external nofollow" class = "pull-right" >更多>></a>
$row = $table ->fetch()每次读取一条信息,得到的是一个索引数组,代码里的 $row [ 'id' ]表示 $row 里面名为id的值,也可表示为 $row .id
|
connect.php(连接数据库)
?
1
2
3
|
<?php
$link = new PDO( "mysql:host=localhost;port=3306;dbname=db" , "root" , "" );
$link ->query( "set names utf8" );
|
listmore.php
?
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
|
<ul id= "list" class = "media-list" >
<?php
include_once ( 'connect.php' );
$result = $link ->query( "select * from news" );
$total = $result ->rowCount(); //查询出来符合条件的总数
$pages = ceil ( $total /4); //分页的总页数
$num = 4; //每页显示的数据条数
$cPage = $_GET [ 'cPage' ]; //获取当前是显示的第几页
$start = $cPage * $num ; //第一条数据
$table = $link ->query( "select * from news order by id desc limit {$start},$num" );
$link = null; //销毁
while ( $row = $table ->fetch()){ //每次读出一条数据,赋给$row
//插入多行文本,把值替换掉
echo <<<_
<li class = "media" >
<a href= "detail.php?id={$row['id']}" >
<img class = "pull-left" src= "{$row['src']}" >
<figcaption>
<h4><span class = "title" >{ $row [ 'title' ]}</span> <span class = "news-date" >{ $row [ 'time' ]}</span></h4>
<p>{ $row [ 'content' ]}</p>
</figcaption>
</a>
</li>
_;
}
?>
</ul>
|
上下翻页:
?
1
2
3
4
5
6
7
8
9
10
11
|
< div class = "page text-center" >
< ul class = "pagination" id = "page" >
< li data-i = "0" id = "index" class="<?php if ($cPage==0) echo 'disabled'; ?>">< a href = "listmore.php?cPage=0" >«首页</ a ></ li >
< li data-i = "1" class="<?php if ($cPage==0) echo 'disabled';?>">< a href="listmore.php?cPage=<?php echo $cPage>0?$cPage-1:0?>"><上一页</ a ></ li >
< li data-i = "2" class="<?php if ($cPage==$pages-1) echo 'disabled'?>">< a href="listmore.php?cPage=<?php echo $cPage==($pages-1)?$pages-1:$cPage+1?>">下一页></ a ></ li >
< li data-i = "3" id = "end" class="<?php if ($cPage==$pages-1) echo 'disabled'?>">< a href="listmore.php?cPage=<?php echo $pages-1?>">尾页»</ a ></ li >
< li class = "disabled" >
< a href = "##" id = "total" ><? php echo ($cPage+1)?>/<? php echo "$pages"?></ a >
</ li >
</ ul >
</ div >
|
2)ajax方法
HTML代码,展示信息装在panel-body里面
?
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
|
< div class = "panel-body" id = "content" >
< ul id = "list" class = "media-list" >
</ ul >
</ div >
< div class = "page text-center" >
< ul class = "pagination" id = "page" >
< li data-i = "0" id = "index" class = "disabled" >< a href = "##" >«首页</ a ></ li >
< li data-i = "1" class = "disabled" >< a href = "##" ><上一页</ a ></ li >
< li data-i = "2" >< a href = "##" >下一页></ a ></ li >
< li data-i = "3" id = "end" >< a href = "##" >尾页»</ a ></ li >
< li class = "disabled" >
< a href = "##" id = "total" ></ a >
</ li >
</ ul >
</ div >
< template id = "temp" > //引用模板
< li class = "media" >
< a href = "detail.html?id={id}" >
< img class = "pull-left" src = "{src}" >
< figcaption >
< h4 >< span class = "title" >{title}</ span > < span class = "news-date" >{date}</ span ></ h4 >
< p >{content}</ p >
</ figcaption >
</ a >
</ li >
</ template >
|
JS代码:
?
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
|
var html=$( '#temp' ).html();
var curPage=0,pages=0;
$.getJSON( 'php/pages.php' , function (res) {
pages=Math.ceil(res/4); /*获取信息的总页数*/
});
function show(cPage){ //替换每一页的内容
$.getJSON( 'php/listmore.php' ,{cPage:cPage}, function (json) {
var str= '' ;
$( '#list' ).empty();
json.forEach( function (el) {
str+=html.replace( '{id}' ,el.id).replace( '{title}' ,el.title).replace( '{src}' ,el.src)
.replace( '{content}' ,el.content).replace( '{date}' ,el.time);
});
$( '#list' ).html(str);
});
$( '#total' ).html((curPage+1)+ '/' +pages);
}
setTimeout( function () {
show(0);
},100);
$( '#page' ).on( 'click' , 'li' , function () { //上下翻页,翻遍当前页的值
var i=$( this ).data( 'i' ); //jquery里特有的获取data-*属性的方法
switch (i){
case 0:curPage=0; break ;
case 1:curPage>0?curPage--:0; break ;
case 2:curPage<(pages-1)?curPage++:pages-1; break ;
case 3:curPage=pages-1; break ;
}
show(curPage);
disabled(curPage);
})
function disabled(curPage) { //关于临界值禁止选择
if (curPage==0){ /*当前页为第一页,首页和上一页选项禁止点击*/
$( '#index' ).addClass( 'disabled' ).next().addClass( 'disabled' );
$( '#end' ).removeClass( 'disabled' ).prev().removeClass( 'disabled' );
} else if (curPage==pages-1){
$( '#index' ).removeClass( 'disabled' ).next().removeClass( 'disabled' );
$( '#end' ).addClass( 'disabled' ).prev().addClass( 'disabled' );
} else { /*当前页为最后一页,尾页和下一页选项禁止点击*/
$( '#index' ).removeClass( 'disabled' ).next().removeClass( 'disabled' );
$( '#end' ).removeClass( 'disabled' ).prev().removeClass( 'disabled' );
}
}
|
connect.php(连接数据库)
?
1
2
3
|
<?php
$link = new PDO( "mysql:host=localhost;port=3306;dbname=db" , "root" , "" );
$link ->query( "set names utf8" );
|
pages.php(获取总页数)
?
1
2
3
4
5
|
<?php
include_once ( 'connect.php' ); //连接数据库
$result = $link ->query( "select * from news" );
$row = $result ->rowCount();
echo $row ;
|
listmore.php(获取数据库里的数据)
?
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
include_once ( 'connect.php' );
$num = 4; //每一页显示的数据条数
$cPage = $_GET [ 'cPage' ]; //获取当前页
$start = $cPage * $num ; //计算当前页显示的第一条数据的数目
/*从表中查询从开始$start的一共$num条数据*/
$result = $link ->query( "select * from news order by id desc limit {$start},$num" );
$link = null;
while ( $row = $result ->fetch()){ /*每一次读取一条数据*/
$json []= $row ; /*把数据赋给json数组*/
}
echo json_encode( $json ); /*把json数组以json格式返回给HTML*/
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://www.cnblogs.com/xyyl/p/10969709.html
相关文章
猜你喜欢
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
Linux下进程管理工具Supervisor的安装配置和基本使用
2025-05-27 54 -
2025-06-04 55
-
2025-05-25 22
-
2025-05-25 35
-
2025-05-29 98
热门评论