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

<?php
/***********************************************
 * @类名:   page
 * @参数:   $myde_total - 总记录数
 *          $myde_size - 一页显示的记录数
 *          $myde_page - 当前页
 *          $myde_url - 获取当前的url
 * @功能:   分页实现
 * @作者:   宋海阁
 */
class page {
    private $myde_total;          //总记录数
    private $myde_size;           //一页显示的记录数
    private $myde_page;           //当前页
    private $myde_page_count;     //总页数
    private $myde_i;              //起头页数
    private $myde_en;             //结尾页数
    private $myde_url;            //获取当前的url
    /*
     * $show_pages
     * 页面显示的格式,显示链接的页数为2*$show_pages+1。
     * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页]
     */
    private $show_pages;

    public function __construct($myde_total=1,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
        $this->myde_total = $this->numeric($myde_total);
        $this->myde_size = $this->numeric($myde_size);
        $this->myde_page = $this->numeric($myde_page);
        $this->myde_page_count = ceil($this->myde_total/$this->myde_size);
        $this->myde_url = $myde_url;
        if($this->myde_total<0) $this->myde_total=0;
        if($this->myde_page<1)  $this->myde_page=1;
        if($this->myde_page_count<1) $this->myde_page_count=1;
        if($this->myde_page>$this->myde_page_count) $this->myde_page=$this->myde_page_count;
        $this->limit = ($this->myde_page-1)*$this->myde_size;
        $this->myde_i=$this->myde_page-$show_pages;
        $this->myde_en=$this->myde_page+$show_pages;
        if($this->myde_i<1){
          $this->myde_en=$this->myde_en+(1-$this->myde_i);
          $this->myde_i=1;
        }
        if($this->myde_en>$this->myde_page_count){
          $this->myde_i = $this->myde_i-($this->myde_en-$this->myde_page_count);
          $this->myde_en=$this->myde_page_count;
        }
        if($this->myde_i<1)$this->myde_i=1;
    }
    //检测是否为数字
    private function numeric($num){
      if(strlen($num)){
         if(!preg_match("/^[0-9]+$/",$num)){
             $num=1;
           }else{
             $num = substr($num,0,11);
         }
      }else{
               $num=1;
      }
      return $num;
    }
    //地址替换
    private function page_replace($page){
        return str_replace("{page}",$page,$this->myde_url);
    }
    //首页
    private function myde_home(){
        if($this->myde_page!=1){
            return ‘<a href="‘.$this->page_replace(1).‘" class="page-numbers" title="首页">首页</a>‘;
        }else{
            return "<p>首页</p>";
        }
    }
    //上一页
    private function myde_prev(){
       if($this->myde_page!=1){
           return ‘<span class="page-numbers prev inactive"><a href="‘.$this->page_replace($this->myde_page-1).‘" title="上一页">上一页</a></span>‘;
       }else{
              return ‘<span class="page-numbers prev inactive">上一页</span>‘;
       }
    }
    //下一页
    private function myde_next(){
        if($this->myde_page!=$this->myde_page_count){
            return ‘<a class="page-numbers next" href="‘.$this->page_replace($this->myde_page+1).‘" title="下一页">下一页</a>‘;
        }else{
            return‘<p class="page-numbers next">下一页</p>‘;
        }
    }
    //尾页
    private function myde_last(){
        if($this->myde_page!=$this->myde_page_count){
            return ‘<a href="‘.$this->page_replace($this->myde_page_count).‘" class="page-numbers" title="尾页">尾页</a>‘;
        }else{
            return ‘<p>尾页</p>‘;
        }
    }
    //输出
    public function myde_write($id=‘page‘){
       $str =‘<div id="‘.$id.‘">‘;
       $str.=$this->myde_home();
       $str.=$this->myde_prev();
       if($this->myde_i>1){
            $str.=‘<p class="page-numbers">...</p>‘;
       }
       for($i=$this->myde_i;$i<=$this->myde_en;$i++){
            if($i==$this->myde_page){
                $str.=‘<a href="‘.$this->page_replace($i).‘" class="page-numbers current" title="第‘.$i.‘页" class="cur">‘.$i.‘</a>‘;
            }else{
          $str.=‘<a href="‘.$this->page_replace($i).‘" class="page-numbers" title="第‘.$i.‘页">‘.$i.‘</a>‘;
            }
       }
       if( $this->myde_en<$this->myde_page_count ){
            $str.=‘<p class="page-numbers">...</p>‘;
       }
       $str.=$this->myde_next();
       $str.=$this->myde_last();
       $str.=‘<p class="pageRemark">共<b>‘.$this->myde_page_count.
             ‘</b>页<b>‘.$this->myde_total.‘</b>条数据</p>‘;
       $str.=‘</div>‘;
       return $str;
    }
}
?>
./page.class.php 

分页类代码,修正

以下为调用,应用代码

<?php
require_once(‘./page.class.php‘); //分页类
$showrow = 3;//一页显示的行数
$curpage = empty($_GET[‘page‘])?1:$_GET[‘page‘];//当前的页,还应该处理非数字的情况
$url = "?page={page}";//分页地址,如果有检索条件 ="?page={page}&q=".$_GET[‘q‘]
//省略了链接mysql的代码,测试时自行添加
$sql = "SELECT * FROM table";
$query = mysql_query($sql);
$total = mysql_num_rows($query);//记录总条数
if(!empty($_GET[‘page‘]) && $total !=0 && $curpage > ceil($total/$showrow))
$curpage = ceil($total_rows/$showrow);//当前页数大于最后页数,取最后一页
//获取数据
$get_data = "select * from table limit ".($curpage-1)*$showrow.",$showrow;";
...
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>实例演示简易通用的PHP分页类</title>
<style type="text/css">
#page{
    height:40px;
    padding:20px 0px;
}
#page a{
    display:block;
    float:left;
    margin-right:10px;
    padding:2px 12px;
    height:24px;
    border:1px #cccccc solid;
    background:#fff;
    text-decoration:none;
    color:#808080;
    font-size:12px;
    line-height:24px;
}
#page a:hover{
    color:#077ee3;
    border:1px #077ee3 solid;
}
#page a.cur{
    border:none;
    background:#077ee3;
    color:#fff;
}
#page p{
    float:left;
    padding:2px 12px;
    font-size:12px;
    height:24px;
    line-height:24px;
    color:#bbb;
    border:1px #ccc solid;
    background:#fcfcfc;
    margin-right:8px;

}
#page p.pageRemark{
    border-style:none;
    background:none;
    margin-right:0px;
    padding:4px 0px;
    color:#666;
}
#page p.pageRemark b{
    color:red;
}
#page p.pageEllipsis{
    border-style:none;
    background:none;
    padding:4px 0px;
    color:#808080;
}
</style>
</head>

<body>
    <div class="main">
        <div class="showData">
            <!--显示数据区-->
        </div>
        <div class="showPage">
          <?php
             if($total>$showrow){//总记录数大于每页显示数,显示分页
             $page = new page($total,$showrow,$curpage,$url,2);
             echo $page->myde_write();
            }
          ?>
         </div>
    </div>
</body>
</html>

修改了showrow,出现了错误,再重新修改,就又好了,不思奇解,

以前写过类,现在都不清楚类应该怎么写了。荒废时间太长了。

现在没人用分类类代码了,除非是学习用的,一般都采用,滚动条判断读取。

时间: 2024-12-09 17:42:54

简单易用的分页类实例代码PHP的相关文章

加载分页类(实例并优化)

1 <html> 2 <head> 3 <style type="text/css"> 4 .p1 5 { 6 color:yellow; 7 background-color:#00F; 8 font-size:14px; 9 } 10 </style> 11 </head> 12 <body> 13 <?php 14 header("Content-Type:text/html;charset=

简单易用的工具类

Butterknife: ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeWharton的力作,目前使用很广.最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class.项目集成起来也是特别方便,使用起来也是特别简单. utilcode 一个强大的工具类,

php递归json类实例代码

这篇文章主要介绍了php递归json类的实现方法,可以实现对索引数组及数字数组的解析,进而实现递归数组返回json字符串的功能.具体实现代码如下: <?php /* * @ anthor:QD * @ time: 2013-09-27 */ class json{ private $Arr = array(); //传入数组 //构造器 public function json($array) { if(!is_array($array)) return false; $this->Arr =

jquery ajax jsonp跨域调用实例代码

今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.WebForm1" %><!DOCTYPE html P

C# Oracle数据库操作类实例详解

本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务.需要特别指出的是:在执行SQL语句,返回 DataReader之前一定要先用.read()打开,然后才能读到数据,再用hashTable对数据库进行insert,update,del操作,注意此时只能用默认的数据库连接"connstr". 本文

将php分页类与YII框架结合并根据需要改变样式

分页类http://blog.csdn.net/buyingfei8888/article/details/40260127 分页类放在组件里面 文件名称与保持一致 组件是在什么地方被加载进来的?在主配置文件里面 实现分页效果也是分为4步: 控制器: function actionShow1(){ $good_model = Goods::model(); $good_info = $good_model ->findAll(); //设置总数目和每页显示数量 $cnt = $good_mode

一个简单的php分页类代码(转载)

入门级php分页类 原文地址:http://www.xfcodes.com/php/fenye/3608.htm 时间:2015-12-16 20:52:00来源:网络 php分页类. 复制代码代码如下: <?php/** 快速php分页类***/class Page{    private $totalpage;    private $stride;    private $currentpage;    //设置总页数    function setTotalpage($objpage=1

简单实用的PHP防注入类实例

这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注入类.分享给大家供大家参考.具体如下: PHP防注入注意要过滤的信息基本是get,post,然后对于sql就是我们常用的查询,插入等等sql命令了,下面我给各位整理两个简单的例子,希望这些例子能给你网站带来安全. PHP防注入类代码如下: 复制代码 代码如下: <?php /**  * 参数处理类  *

转载:分页原理+分页代码+分页类制作

分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一.对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解. 一.分页原理:       所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数: 每页多少条记录($PageSize)?       当前是第几页($CurrentPageID)? 现在只要再给我一个结果集,我就可以显示某段特