1. 程式人生 > >thinkphp分頁封裝

thinkphp分頁封裝

UNC arr lis ini result set think 判斷 art

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分頁封裝