php 自己写的好看的分页类

自己写的一个分页类 ,不是很完整,个别没有做验证,但可以使用,分页效果见文章底部。除了链接数据库的代码没有粘贴上来,其他的都粘贴了。供学习使用~

  1 <?php
  2 /**
  3  * Created by PhpStorm.
  4  * User: Caoxt
  5  * Date: 15-7-3
  6  * Time: 上午10:03
  7  */
  8 class page {
  9     public $pageSize;  //每页显示的文章条数
 10     public $showPage;  //页数条显示的条数
 11     public $count;     //文章总条数
 12     public $page;      //当前页
 13     public $mergyStr; //存储页码的变量
 14     public $skip;    //跳转页开关,默认为false关闭
 15
 16     //初始化参数
 17     public function __construct($count, $pageSize = 10, $showPage = 5, $currentPage = 1, $skip = false) {
 18         $this->pageSize = $pageSize;
 19         $this->showPage = $showPage;
 20         $this->count    = $count;
 21         $this->page     = $this->checkPage($currentPage);
 22         $this->mergyStr = ‘‘;
 23         $this->skip     = $skip;
 24     }
 25
 26     //检查传递的$page的合法性
 27     public function checkPage($currentPage) {
 28          if($currentPage < 1 || empty($currentPage)) {
 29              $currentPage = 1;
 30          }
 31         if($currentPage > $this->totalPages()) {
 32             $currentPage = $this->totalPages();
 33         }
 34         return $currentPage;
 35     }
 36
 37     //计算偏移量
 38     public function pageOffset() {
 39         return ($this->showPage-1)/2;
 40     }
 41
 42     //计算总页数
 43     public function totalPages() {
 44         return ceil($this->count/$this->pageSize);
 45     }
 46
 47     //获取页面URL
 48     public function getPageUrl() {
 49         $CurrentUrl = $_SERVER["REQUEST_URI"];
 50         $arrUrl     = parse_url($CurrentUrl);
 51         $urlQuery   = $arrUrl["query"];
 52
 53         if($urlQuery){
 54             //print_r($this->page);
 55             $urlQuery  = preg_replace("/(^|&)page=/" . $this->page, "", $urlQuery);
 56             $CurrentUrl = str_replace($arrUrl["query"], $urlQuery, $CurrentUrl);
 57
 58             if($urlQuery){
 59                 $CurrentUrl.="&page";
 60             }
 61             else $CurrentUrl.="page";
 62
 63         } else {
 64             $CurrentUrl.="?page";
 65         }
 66
 67         return $CurrentUrl;
 68     }
 69
 70     //页码显示行
 71     public function GetPagerContent() {
 72         $start = 1;
 73         $end   = $this->totalPages();
 74         $this->mergyStr .= "<div class=‘page‘>";
 75         if($this->page > 1) {
 76             $this->mergyStr .= " <a href=‘".$this->getPageUrl()."="."1‘>首页</a>";
 77             $this->mergyStr  .= " <a href=‘".$this->getPageUrl()."=".($this->page-1)."‘>上一页</a>";
 78         }else{
 79             $this->mergyStr .= " <span class=‘disable‘>首页</span>";
 80             $this->mergyStr  .= " <span class=‘disable‘>上一页</span>";
 81         }
 82
 83         if($this->totalPages() > $this->showPage) {
 84             if($this->page > $this->pageoffset()+1) {
 85                 $this->mergyStr .= "...";
 86             }
 87
 88             if($this->page > $this->pageoffset()) {
 89                 $start = $this->page-$this->pageoffset();
 90                 $end = $this->totalPages() > $this->page+$this->pageoffset() ? $this->page+$this->pageoffset() : $this->totalPages();
 91             }
 92             else{
 93                 $start = 1;
 94                 $end = $this->totalPages() > $this->showPage ? $this->showPage : $this->totalPages();
 95             }
 96
 97             if($this->page + $this->pageoffset() > $this->totalPages()) {
 98                 $start = $start - ($this->page + $this->pageoffset() - $end);
 99             }
100
101         }
102
103         for($i=$start; $i<=$end; $i++) {
104             if($i == $this->page) {
105                 $this->mergyStr .= "<span class=‘current‘>{$i}</span>";
106             }else{
107                 $this->mergyStr .= " <a href=‘".$this->getPageUrl()."=".$i."‘>{$i}</a>";
108             }
109
110         }
111
112         if($this->totalPages() > $this->showPage && $this->totalPages() > $this->page + $this->pageoffset()) {
113             $this->mergyStr  .= "...";
114         }
115
116         if($this->page < $this->totalPages()) {
117             $this->mergyStr .= " <a href=‘".$this->getPageUrl()."=".($this->page+1)."‘>下一页</a>";
118             $this->mergyStr .= " <a href=‘".$this->getPageUrl()."=".$this->totalPages()."‘>尾页</a>";
119         }else{
120             $this->mergyStr .= " <span class=‘disable‘>下一页</span>";
121             $this->mergyStr  .= " <span class=‘disable‘>尾页</span>";
122         }
123
124         $this->mergyStr .= " 共{$this->totalPages()}页";
125
126         //显示跳转框
127         if($this->skip == true) {
128             $this->mergyStr .= $this->skipNumPage();
129         }
130
131         $this->mergyStr .= "</div>";
132
133         print_r($this->mergyStr);
134     }
135
136     //跳转页
137     public function skipNumPage() {
138         $this->mergyStr .= "<form action=‘‘ method=‘get‘>";
139         $this->mergyStr .= "第<input type=‘text‘ name=‘page‘ style=‘width:30px; height:25px; border: 1px solid #aaaadd;‘>页";
140         $this->mergyStr .= "<input type=‘submit‘ value=‘查询‘ style=‘border: 1px solid #aaaadd; text-decoration: none; padding:4px 10px 4px 10px; ‘ >";
141         $this->mergyStr .= "</form>";
142     }
143
144 }

上面是类文件的所有代码,以下是调用实例:

<?php
//数据库链接,不写了

//每页显示条数
$pageSize = 10;
//页码行显示的条数
$showPage = 5;
//当前页
$page = isset($_GET[‘page‘]) ? $_GET[‘page‘] : 1;

//当前页显示的文章
$sql = "select * from follow_trade_1 order by `follow_trade_id` asc limit ".($page-1)*$pageSize.",{$pageSize}";
$query = mysql_query($sql);

//计算总条数
$sql_count = mysql_query("select count(*) from follow_trade_1");
$query_count = mysql_fetch_row($sql_count);
$count = $query_count[0];

//实例化分页类
require("page.php");
$p = new page($count, $pageSize, $showPage, $page, true);

//table里的文章数据
echo "<table border=‘1‘ style=‘width:400px;‘>";
echo "<tr><td>follow_trade_id</td><td>follow_id</td></tr>";
while($rs = mysql_fetch_assoc($query)) {
    echo "<tr><td>{$rs[‘follow_trade_id‘]}</td><td>{$rs[‘follow_id‘]}</td></tr>";
}
echo "</table>";

//读取分页条
$p->GetPagerContent();

样式CSS:

<style>
    div.page{text-align: left; margin-top: 10px;}
    div.page a{border: 1px solid #aaaadd; text-decoration: none; padding:2px 10px 2px 10px; margin: 2px;}
    div.page span.current{border: 1px solid #000099; background-color: #000099; padding: 4px 10px 4px 10px; margin: 2px; color: #fff; font-weight: bold;}
    div.page span.disable{border: 1px solid #eee; padding: 2px 5px 2px 5px; margin: 2px; color: #ddd;}
    div.page form{display: inline;}
</style>

效果如图所示:

时间: 2024-08-03 22:32:04

php 自己写的好看的分页类的相关文章

刚写的一个js分页类,未优化

以前也写过,很久以前了,写的很长,并且使用起来也不灵活.这次搞了个灵活版的. /* * SunPage --自定义分页类,仅获取分页的html代码,简单应用 * Sunbt 2015-5-4 * v1.0 * @param current_page int 当前页 * @param totle_page int 总页数 * @param take_num int 当前页左右携带页码数 * @param func_obj obj 分页实现函数 */ var SunPage = function(c

Ci 自己的分页类【原创】

这里是自己手写的一个CI分页类的实现 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * * @package CodeIgniter * @author sunzhiyan 这是自己的一个工具类的测试,调用方法是 /** */ class CI_Mypage { /* * $pagenum 每页显示的数据 * $url 跳转的URL地址 * $rscount 数据总条数 * $pagi

二十七、CI框架之自己写分页类并加载(写分页还是有难度,搞了一整天)

一.我们写好自己的分页代码,防止library目录中,带构造函数 二.在模型中,添加2个函数,一个是查询数据的条数,第二个是取出数据库中的数据 三.在控制中,写入相应的代码,如下: 四.在界面中,写入代码 五.我们打开浏览器,就可以看到CI框架的分页已经被我们替换掉了,如图: 总结: 大家可以看到,目前我自己比较好用的一个分页类在CI中可以正常使用,但是翻页之后,是用的 [ ?page=6 ]这种形式来呈现的,和CI还是不符合,我们后续改进一下分页类的写法,符合CI的规范. 原文地址:https

nodejs分页类

改编自http://my.oschina.net/wanglihui/blog/269907,感谢原作者,我在基础上进行了二次封装 分页类,我放在 plugin/Paginate.js /** * 分页插件类(缺少每页的显示数,listrows明天写) * @param page {Number} 当前页 * @param pagesize {Number} 每页记录数 * @param total {Number} 总记录数 * @constructor */ function Paginat

定制 ThinkPHP 分页类

第一步,引入: 1 import('ORG/Util/Page'); 2 $total = M('xxx')->count(); //获取总记录数 3 $page = new Page($total, 3); //实例化:(总数,每页显示的记录数) 4 5 $limit = $page->firstRow.','.$page->listRows; //用于SQL 的 limit 语句的限制字符串:'limit 0,12' 6 $result = M('xxx')->limit($l

简单易用的分页类实例代码PHP

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

PHP碎码——分页类

写了两个版本,还是后面好点,只计算关键数据,返回数组,html代码例外拼接 <?php /**  * 分页类  * @author  timo  * @version 2016-12-11 08:15  */ class paginate{          //当前页码     private $page;     //记录总条目     private $entry_total;     //每页显示多少个记录     private $page_size;     //纯数值li总数,即分

完美分页类

1 <?php 2 header("Content-Type:text/html;charset=utf-8"); 3 //加载分页类 4 include "page.class.php"; 5 6 //定义总数 7 $total =0; 8 9 //1.造连接对象 10 $db = new mysqli("localhost","root","123","mydb"); 11 1

PHP数据库操作&amp;分页类

MySQL数据库操作类: 1 <?php 2 class mysql { 3 private $db_host; //数据库主机 4 private $db_user; //数据库用户名 5 private $db_pwd; //数据库用户名密码 6 private $db_database; //数据库名 7 private $conn; //数据库连接标识; 8 private $result; //执行query命令的结果资源标识 9 private $sql; //sql执行语句 10