作者:suyewen525_337 | 来源:互联网 | 2023-06-28 19:07
篇首语:本文由编程笔记#小编为大家整理,主要介绍了thinkphp分页封装相关的知识,希望对你有一定的参考价值。
php
1.在think目录下新建文件Page.php
2.写如分页封装
1 php
2 /**
3 * Created by PhpStorm.
4 * User: Administrator
5 * Date: 2018/5/8
6 * Time: 18:02
7 */
8
9 namespace think;
10 use think\Db;
11 /**
12 * 分页封装
13 * */
14 class Page
15 {
16 /**
17 * 每页显示的条数
18 * */
19 private static $pageum = 5;
20
21 /**
22 * 每页显示的页码数
23 * */
24 private static $page_show = 5;
25
26 /**
27 * 当前页
28 * */
29 private static $page;
30
31 /**
32 * 跳转的链接 @@ $link @@
33 * */
34
35 /**
36 * 数据库 @@ $surface @@
37 * */
38
39 public static function mypage($link,$surface){
40 /*判断是否有页码传入*/
41 if(empty(input(‘page‘))){
42 self::$page = 1;
43 }else{
44 self::$page = input(‘page‘);
45 }
46 /*查询当前页数据*/
47 $sql = Db::query("select * from $surface order by time desc limit ".(self::$page-1)*self::$pageum.",". self::$pageum);
48 /* 查询数据总条数 $to_page */
49 $r = Db::table($surface)->select();
50 $to_page = count($r);
51 /* 查询总页数 $result*/
52 $result = ceil($to_page/self::$pageum);
53 /**
54 * 打印 首页 上一页
55 */
56 $page_print = ‘‘;//$page_print的默认值为空
57 $home = 1;//第一页(首页)
58 if(self::$page<=1){
59 $page_print .= "$link$home>首页";
60 $page_print .= "$link$home>上一页";
61 }else{
62 $page_print .= "$link$home>首页";
63 $page_print .= "$link".(self::$page-1).">上一页";
64 }
65 /**
66 * 定义偏移量
67 */
68 /*初始化默认值(判断显示页码数是基数还是偶数)*/
69
70 if((self::$page_show%2)==0){
71 $offset = (self::$page_show)/2;//偏移量
72 $start = self::$page-($offset-1);//左偏移
73 $end = self::$page+$offset;//右偏移
74 }else{
75 /*基数*/
76 $offset = (self::$page_show-1)/2;//偏移量
77 $start = self::$page-$offset;//左偏移
78 $end = self::$page+$offset;//右偏移
79 }
80 /*当前页码为2时*/
81 if(self::$page <= 2){
82 $start = 1;
83 $end = self::$page_show;
84 }
85 /*当页页码大于最大页码时*/
86 if(self::$page >= $result-$offset){
87 $start = $result-self::$page_show+1;
88 $end = $result;
89 }
90 /*当前页码小于显示页码时*/
91 if($result$page_show){
92 $start = 1;
93 $end = $result;
94 }
95 /**
96 * 循环打印页码
97 */
98 //如果最大页数大于要显示的页数的时候
99 if($result$page_show){
100 for($i=1;$i<=$result;$i++){
101 if($i == self::$page){
102 $page_print .= "{$i}";
103 }else{
104 $page_print .= "$link$result>{$i}";
105 }
106 }
107 }else{
108 for($i=$start;$i<=$end;$i++){
109 if($i == self::$page){
110 $page_print .= "{$i}";
111 }else{
112 $page_print .= "$link$i>{$i}";
113 }
114 }
115 }
116 /**
117 * 打印 尾页 下一页
118 */
119 if(self::$page >= $result){
120 $page_print .= "$link$result>下一页";
121 $page_print .= "$link$result>尾页";
122 }else{
123 $page_print .= "$link".(self::$page+1).">下一页";
124 $page_print .= "$link$result>尾页";
125 }
126 return array(‘page_print‘=>$page_print,‘to_page‘=>$to_page,‘sql‘=>$sql);
127 }
128 }
3.在想引用分页的PHP文件中引入
4.调用静态类传入地址和数据库
$data = Page::mypage(‘地址后面接上?page=‘,‘数据库‘);
5.取出数据
6.取出分页
7.把数据传入前端页面展示出来
$this->assign(‘result‘,$result);
$this->assign(‘page‘,$page);
html页面
DOCTYPE html>
<html lang="en">
<head>
head>
<body>
{volist name="result" id="v"}
数据
{/volist}
{$page}
body>
html>
最后根据所给类名设置css样式
里面页码和显示数据条数都是可以自己设置