分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

thinkphp分页封装

发布时间:2023-09-06 01:53责任编辑:郭大石关键词: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 .= "<a href=$link$home>首页</a>"; 60 ????????????$page_print .= "<a href=$link$home><span>上一页</span></a>"; 61 ????????}else{ 62 ????????????$page_print .= "<a href=$link$home>首页</a>"; 63 ????????????$page_print .= "<a href=$link".(self::$page-1)."><span>上一页</span></a>"; 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<self::$page_show){ 92 ????????????$start = 1; 93 ????????????$end = $result; 94 ????????} 95 ????????/** 96 ?????????* 循环打印页码 97 ?????????*/ 98 ????????//如果最大页数大于要显示的页数的时候 99 ????????if($result<self::$page_show){100 ????????????for($i=1;$i<=$result;$i++){101 ????????????????if($i == self::$page){102 ????????????????????$page_print .= "<a class=‘active‘>{$i}</a>";103 ????????????????}else{104 ????????????????????$page_print .= "<a href=$link$result>{$i}</a>";105 ????????????????}106 ????????????}107 ????????}else{108 ????????????for($i=$start;$i<=$end;$i++){109 ????????????????if($i == self::$page){110 ????????????????????$page_print .= "<a class=‘active‘>{$i}</a>";111 ????????????????}else{112 ????????????????????$page_print .= "<a href=$link$i>{$i}</a>";113 ????????????????}114 ????????????}115 ????????}116 ????????/**117 ?????????* 打印 尾页 下一页118 ?????????*/119 ????????if(self::$page >= $result){120 ????????????$page_print .= "<a href=$link$result><span>下一页</span></a>";121 ????????????$page_print .= "<a href=$link$result>尾页</a>";122 ????????}else{123 ????????????$page_print .= "<a href=$link".(self::$page+1)."><span>下一页</span></a>";124 ????????????$page_print .= "<a href=$link$result>尾页</a>";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样式

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

thinkphp分页封装

原文地址:https://www.cnblogs.com/notesbooks/p/9019579.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved