博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一种分页的实现
阅读量:5895 次
发布时间:2019-06-19

本文共 4115 字,大约阅读时间需要 13 分钟。

以下代码是一种分页的实现。分别是文件page.php和page.css。

分页的纠结点在于分页条中省略号的显示。

实现的基本逻辑是:

1,接收浏览器端传过来的想要显示的页码数 $page。

$page = $_GET['p']。

2,根据页码数 $page 以及固定的每页显示数 $pageSize 从数据库中取数据。

$sql = "SELECT * FROM books LIMIT ".(($page-1)*$pageSize).",10";

3,填充表格。

4,页码条头部显示。

5,页码条中间页码开始$atart及结束$end的具体求值。

  $showPage = 5; 为最大显示页码数

  $offset = ($showPage-1)/2; 为偏移量

  $sql = 'SELECT count(*) FROM books';

  $totalPage 为总的显示页码数

  (1)当$totalPage <= $showPage时,1~1+$totalPage。

  (2)当$totalPage > $showPage时,

    1~(1+$showPage)

    或者 ($page-offset)~($page+$offset+1)

    或者($totalPage-$showPage+1)~($totalPage+1)

6,根据 5 中得到的$start和$end显示中间的页码数。

7,6 的同时,还要加上相应的省略号。

  (1)$start > 1 时,前加省略号。

  (2)$end <= $totalPage 时,后加省略号。

8,跳转的设置。用form表单的方式。

9,相关样式的设置。

page.php

1   2   3     
4
5 6 7
"; 27 echo '
'; 28 echo '
'; 29 while($row = mysql_fetch_assoc($res)){ 30 echo '
'; 31 echo "
"; 32 echo "
"; 33 echo '
'; 34 } 35 echo '
ID NAME
{
$row['id']}
{
$row['name']}
'; 36 37 //4分页条参数设置 38 $showPage = 5;//同时最多可以显示页码数量 39 $offset = ($showPage-1)/2;//以当前页码为中心的最多偏移量 40 $sql = 'SELECT count(*) FROM books'; 41 $arr = mysql_fetch_array(mysql_query($sql)); 42 $totalPage = ceil($arr[0]/$pageSize);//可以显示的总页数 43 mysql_free_result($res); 44 mysql_close($conn); 45 $db = 'bookstore'; 46 //5分页条目首部显示 47 $page_banner = "
"; 48 if($page > 1){ 49 $page_banner .= "
首页"; 50 $page_banner .= "
<上一页>
"; 51 }else{ 52 $page_banner .= "
首页"; 53 $page_banner .= "
<上一页>
"; 54 } 55 //6分页条目中部显示,先找出开头结尾的页码 56 if($totalPage > $showPage){ 57 //显示部分页码,带了省略号,此处以5页为例 58 if(($page - $offset) <= 1){
//显示前5页,后面加省略号 59 $start = 1; 60 $end = $start + $showPage; 61 } elseif (($page + $offset) >= $totalPage) {
//显示最后5页,前边加省略号 62 $start = $totalPage - $showPage + 1; 63 $end = $totalPage + 1; 64 } else{
//前后都有省略号 65 $start = $page - $offset; 66 $end = $page + $offset + 1; 67 } 68 } else { 69 //显示所有可以显示的页码 70 $start = 1; 71 $end = $start + $totalPage; 72 } 73 if($start > 1){ 74 $page_banner .= '...'; 75 } 76 //7分页条目中部显示,根据页码显示相应 77 for($i = $start; $i < $end; $i++){ 78 if($i == $page){ 79 $page_banner .= "
".($i).""; 80 }else{ 81 $page_banner .= "
".($i).""; 82 } 83 } 84 //8分页条目尾部显示,根据页码显示相应 85 if($end <= $totalPage){ 86 $page_banner .= '...'; 87 } 88 if($page < $totalPage){ 89 $page_banner .= "
下一页>"; 90 $page_banner .= "
尾页"; 91 }else{ 92 $page_banner .= "
尾页"; 93 $page_banner .= "
下一页>"; 94 } 95 //9跳转 96 $page_banner .= "共".$totalPage."页"; 97 $page_banner .= "
"; 98 $page_banner .= "跳转到第
页"; 99 $page_banner .= "
";100 $page_banner .= "
";101 $page_banner .= "
";102 echo $page_banner;103 ?>104 105
View Code

page.css

1 body{ 2     text-align: center; 3     font-family: verdana; 4     font-size: 12px; 5     width:100%; 6 } 7 table{ 8     margin: 0 auto; 9     text-align:center;10 }11 div.page form{12     display: inline;13 }14 div.content{15     height:300px;16 }17 div.page a{18     border: 1px solid #aaaadd;19     text-decoration: none;20     padding: 2px 5px 2px 5px;21     margin: 2px;    22 }23 div.page span.current{24     border: 1px solid #000099;25     background-color: #000099;26     text-decoration: none;27     padding: 4px 6px 4px 6px;28     margin: 2px;    29     color: #fff;30 }31 div.page span.display{32     border: 1px solid #eee;33     text-decoration: none;34     padding: 2px 5px 2px 5px;35     margin: 2px;36     color:#ddd;37 }
View Code

 

转载于:https://www.cnblogs.com/omigia/p/4622520.html

你可能感兴趣的文章
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
javascript继承方式详解
查看>>
lnmp环境搭建
查看>>
自定义session扫描器精确控制session销毁时间--学习笔记
查看>>
仿射变换
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
occActiveX - ActiveX with OpenCASCADE
查看>>
BeanUtils\DBUtils
查看>>
python模块--os模块
查看>>
linux下单节点oracle数据库间ogg搭建
查看>>
Java 数组在内存中的结构
查看>>
《关爱码农成长计划》第一期报告
查看>>
学习进度表 04
查看>>
谈谈javascript中的prototype与继承
查看>>
时序约束优先级_Vivado工程经验与各种时序约束技巧分享
查看>>
minio 并发数_MinIO 参数解析与限制
查看>>