首页 > 代码库 > php无限分页类
php无限分页类
搞了2个小时,哈哈,自己按照自己的想法把他写出来了!虽然效率有点慢,有些验证的东西也忽略了!
page.class.php
1 <?php 2 /* 3 * 4 * 5 * 6 */ 7 class Pages{ 8 public $rows;//每页显示的行数 9 public $sqli;//sqli对象 10 private $result;//结果集对象 11 private $sql_str;//查询字符串 12 public $total_rows;//总的条数 13 public $total_pages;//总的页数 14 private $field_str = ‘‘;//字段的显示 15 private $bottom_str;//表格底部信息 16 private $field_num;//字段数目 17 private $cur_page;//当前页面 18 private $next_page;//下一页 19 private $pre_page;//上一页 20 private $next_link;//下一页链接 21 private $pre_link;//上一页链接 22 private $cur_text;//当前页码 23 private $result_str = ‘‘;//得到结果集字符串 24 private $tb;//需要查询的表格 25 public function __construct($rows,$total_rows,$sqli,$db,$tb){ 26 $this->rows = $rows<=$total_rows?$rows:$total_rows; 27 $this->sqli = $sqli; 28 $this->total_rows = $total_rows; 29 $this->tb = $tb; 30 $this->sqli->select_db($db); 31 $this->setTotalPages(); 32 $this->setPage(); 33 $this->setSqlStr(); 34 $this->setResult(); 35 $this->setFieldStr(); 36 $this->setFieldNum(); 37 $this->setLink(); 38 $this->setBottomStr(); 39 $this->setResultStr(); 40 } 41 private function setTotalPages(){ 42 $this->total_pages = ceil($this->total_rows/$this->rows); 43 } 44 private function setFieldStr(){ 45 $this->field_str .= ‘<tr style="color:red;">‘; 46 while($field_name = $this->result->fetch_field()){ 47 $this->field_str .= ‘<th>‘.$field_name->name.‘</th>‘; 48 } 49 $this->field_str .= ‘</tr>‘; 50 } 51 private function setFieldNum(){ 52 $this->field_num = $this->result->field_count; 53 } 54 private function setBottomStr(){ 55 $this->bottom_str =" 56 <tr style=‘color:blue;‘> 57 <th colspan=‘{$this->field_num}‘> 58 Total rows: {$this->total_rows} Total pages: {$this->total_pages} Per: {$this->rows} Rows/Page 59 60 </th> 61 </tr>"; 62 } 63 private function setSqlStr(){ 64 $start = ($this->cur_page-1)*$this->rows; 65 $this->sql_str = "SELECT * FROM {$this->tb} LIMIT {$start},{$this->rows}"; 66 } 67 private function setResult(){ 68 $this->result = $this->sqli->query($this->sql_str); 69 } 70 private function setPage(){ 71 $this->cur_page = isset($_GET[‘page‘])?$_GET[‘page‘]:1; 72 $this->validatePage(); 73 $np = $this->cur_page + 1; 74 $pp = $this->cur_page - 1; 75 $this->next_page = ($np > $this->total_pages)? $this->total_pages+1 : $np; 76 $this->pre_page = $pp; 77 } 78 private function setLink(){ 79 $link_span = floor($this->field_num / 3); 80 $cur_span = $this->field_num - ($link_span * 2); 81 if($this->next_page >= ($this->total_pages+1)){ 82 $this->next_link = "<th colspan=‘{$link_span}‘><span>MAX</span></th>"; 83 }else{ 84 $this->next_link = "<th colspan=‘{$link_span}‘><a href=http://www.mamicode.com/‘?page={$this->next_page}‘>Next</a></th>"; 85 } 86 if($this->pre_page == 0){ 87 $this->pre_link = "<th colspan=‘{$link_span}‘><span>MIN</span></th>"; 88 }else{ 89 $this->pre_link = "<th colspan=‘{$link_span}‘><a href=http://www.mamicode.com/‘?page={$this->pre_page}‘>Previous</a></th>"; 90 } 91 $this->cur_text = "<th colspan=‘{$cur_span}‘>Page:{$this->cur_page}</th>"; 92 } 93 //验证页码的有效性 94 private function validatePage(){ 95 if($this->cur_page <= 1){ 96 $this->cur_page = 1; 97 } 98 if($this->cur_page >= $this->total_pages){ 99 $this->cur_page = $this->total_pages; 100 }101 }102 private function setResultStr(){103 $j=0;104 while($results = $this->result->fetch_array(MYSQLI_NUM)){105 if($j%2==0){106 $this->result_str .= ‘<tr style="background:#EEE;">‘;107 }else{108 $this->result_str .= ‘<tr>‘;109 }110 for($i=0; $i<$this->field_num;$i++){111 $this->result_str .= "<th>{$results[$i]}</th>";112 }113 $this->result_str .= ‘</tr>‘;114 $j++;115 }116 }117 public function view(){118 $view_str = "<table style=‘border:1px solid black;‘>".$this->field_str.$this->result_str.$this->pre_link.119 $this->cur_text.$this->next_link.$this->bottom_str."</table>";120 echo $view_str;121 }122 public function __destruct(){123 $this->result->free();124 $this->sqli->close();125 }126 }
page.php
1 <style type="text/css"> 2 th{ 3 width:200px; 4 border:1px solid #ccc; 5 } 6 table{ 7 margin:0px auto; 8 } 9 a{10 text-decoration:none;11 }12 </style>13 <?php14 echo ‘<pre>‘;15 include_once(‘page.class.php‘);16 $rows = 8;17 $total_rows = 40;18 $tb = ‘CHARACTER_SETS‘;19 $db = ‘information_schema‘;20 $sqli = new mysqli(‘localhost‘,‘root‘,‘lf1234‘);21 $page = new Pages($rows,$total_rows,$sqli,$db,$tb);22 $page->view();
php无限分页类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。