thinkphp分頁封裝
阿新 • • 發佈:2018-05-10
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 privatestatic $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 * */ 3839 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 $surfaceorder 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分頁封裝