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}&nbsp;&nbsp;&nbsp;Total pages: {$this->total_pages}&nbsp;&nbsp;&nbsp;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=‘?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=‘?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 <?php
14 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();

时间: 2024-11-07 19:55:27

php无限分页类的相关文章

PHP非常好用的分页类

分页类: <?php /* * ********************************************* * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 * @作者: 宋海阁 */ class Page { private $myde_total; //总记录数 private $myde_siz

php分页类

<?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; //SQL语句使用limit从句,限制获取记录个数 private $uri; //自动获取url的请求地址 private $pageNum; //总页数 private $page; //当前页 private $config = arr

PHP简单分页类

<?php /* * ********************************************* * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 * @作者: 宋海阁 */ class page { private $myde_total; //总记录数 private $myde_size; //

thinkphp简洁、美观、靠谱的分页类

废话不多说先上图预览下:即本博客的分页: 这个分页类是在thinkphp框架内置的分页类的基础上修改而来: 原分页类的一些设计,在实际运用中感觉不是很方便: 1:只有一页内容时不显示分页: 2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮: 3:分页数比较少时不显示首页和末页按钮: 4:包裹分页内容的父级div没有class: 针对以上问题逐一进行了修改成如下: 1:如果没有数据不显示分页,如果有一页及以上内容即显示分页: 2:默认就显示第一页和最后一页按钮,但是在当前

ASP经典分页类

================================================================= 'XDOWNPAGE ASP版本 '版本 1.00 'Code by zykj2000 'Email: [email protected] 'BBS: http://bbs.513soft.net '本程序可以免费使用.修改,希望我的程序能为您的工作带来方便 '但请保留以上请息 ' '程序特点 '本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义

thinkphp自带分页类

thinkphp自带分页使用案例: $Data = M('Data'); // 实例化Data数据对象  date 是你的表名     import('ORG.Util.Page');// 导入分页类     $count = $Data->where($map)->count();// 查询满足要求的总记录数 $map表示查询条件     $Page = new Page($count);// 实例化分页类 传入总记录数     $show = $Page->show();// 分页显

php中的实用分页类

<table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>地区代号</td> <td>地区名称</td> <td>父级代号</td> </tr> <?php include("LZY.class.php");

php 分页类

<?php/* * ********************************************* * @类名: page * @参数: $myde_total - 总记录数 * $myde_size - 一页显示的记录数 * $myde_page - 当前页 * $myde_url - 获取当前的url * @功能: 分页实现 * @作者: 宋海阁 */ class page{ private $myde_total; //总记录数 private $myde_size; //一页

分页类

<?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $listRows; //每页显示行数 private $limit; //SQL语句使用limit从句,限制获取记录个数 private $uri; //自动获取url的请求地址 private $pageNum; //总页数 private $page; //当前页 private $config = arr