热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:thinkphp分页封装

篇首语:本文由编程笔记#小编为大家整理,主要介绍了thinkphp分页封装相关的知识,希望对你有一定的参考价值。php

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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文件中引入


use think\Page;

4.调用静态类传入地址和数据库


$data = Page::mypage(‘地址后面接上?page=‘,‘数据库‘);

5.取出数据


$result = $data[‘sql‘];

6.取出分页


$page = $data[‘page‘];

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样式

里面页码和显示数据条数都是可以自己设置

 


推荐阅读
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • 1.File类:文件和目录路径名的抽象表现形式2.创建对象:File(Stringpathname)通过给定的路径创建文件对象File(Stringpa ... [详细]
  • 这篇文章将为大家详细讲解有关C#开发技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#开发技 ... [详细]
  • delphi控件大全
    本文章已收录于:delphi控件查询:http:www.torry.nethttp:www.jrsoftware.orgTb97最有名的工具条(ToolBar) ... [详细]
  • 目录读写文本格式序列化使用数据库合并数据集重塑和轴向旋转数据转换读写文本格式CSV(Comma-SeparatedValues)格式的文件是指以纯文本形式存储的表格数据,这意味着不 ... [详细]
  • 元类print(type(abc))print(type(True))print(type(100))print(type([1,2,3]))print(type({na ... [详细]
  • 我正在使用数组列表通过构建一个交互式菜单供用户选择来存储来自用户输入的值。到目前为止,我的两个选择是为用户提供向列表输入数据和读取列表的全部内容。到目前为止,我创建的代码由两个类组成。 ... [详细]
  • 本文目录一览:1、数据库有哪几种2、数据库软件 ... [详细]
  • C#按值复制数组我有一个类型化的数组MyType[]types;我想制作这个数组的独立副本。我试过这个MyType[]types2newMyType[types.Length];t ... [详细]
  • 标签PostgreSQL,Linux,perf,性能诊断,stap,systemtap,strace,dtrace,dwarf,profiler,perf_events,probe ... [详细]
  • 开发笔记:Xunit测试使用个人小结
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Xunit测试使用个人小结相关的知识,希望对你有一定的参考价值。因工作中用到xunit测试,故总结下用法,以供个人参考使 ... [详细]
  • BEGIN#声明一个开关变量flag用于循环结束判断DECLAREflagBOOLDEFAULTFALSE;#声明变量1DECLAREBL1VARCHAR(255);#声明变量2D ... [详细]
  • lazarus使用sqlite3遇到特定字符时出现乱码的Bug
    lazarus使用zeosDB控件时发现SQLite一个奇怪的现象,应用程序编译为win64时,如果输入中国2022中国时出现乱码,win32和linux64正常,开始怀疑的sql ... [详细]
  • 下载完成之后解压提取jl1.0.0.1.jar这里写图片描述将jl1.0.0.1.jar拷贝到项目中,并添加到Library这里写图片描述4.源代码Tip:由于工程名 ... [详细]
  • 例子如Table表有性别字段,1代表男2代表女、3代表中性、还有没填就代表未说明selectid,decode(sex,'1','男', ... [详细]
author-avatar
suyewen525_337
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有