经典php 分页类- php通用分页类

 更新时间:2016年11月25日 15:58  点击:1639

 
<?php  
 class My_Lib_pages{  
  
   private  $each_disNums;//每页显示的条目数  
   private  $nums;//总条目数  
   var  $current_page;//当前被选中的页  
   private  $sub_pages;//每次显示的页数  
   private  $pageNums;//总页数  
   private  $page_array = array();//用来构造分页的数组  
   private  $subPage_link;//每个分页的链接  
   private  $subPage_type;//显示分页的类型  
    /* 
    __construct是SubPages的构造函数,用来在创建类的时候自动运行. 
    @$each_disNums   每页显示的条目数 
    @nums     总条目数 
    @current_num     当前被选中的页 
    @sub_pages       每次显示的页数 
    @subPage_link    每个分页的链接 
    @subPage_type    显示分页的类型 
  
    当@subPage_type=1的时候为普通分页模式 
    example:   共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页] 
    当@subPage_type=2的时候为经典分页样式 
    example:   当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
    */ 
   function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){  
    $this->each_disNums=intval($each_disNums);
    $nums = $nums==0 ? 1: $nums;
    $this->nums=intval($nums);
    $this->pageNums=ceil($nums/$each_disNums);
    $this->current_page=intval($current_page);
    $this->current_page=  $this->current_page<=0 ? 1: $this->current_page; 
    $this->current_page= $this->current_page > $this->pageNums ? 1 : $this->current_page;
    $this->sub_pages=intval($sub_pages);  
    $this->subPage_link=$subPage_link;   
    $this->show_SubPages($subPage_type);   
    //echo $this->pageNums."--".$this->sub_pages;  
   }  
  
  
   /* 
  __destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。 
    */ 
   function __destruct(){  
  unset($each_disNums);  
  unset($nums);  
  unset($current_page);  
  unset($sub_pages);  
  unset($pageNums);  
  unset($page_array);  
  unset($subPage_link);  
  unset($subPage_type);  
    }  
  
   /* 
  show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页   
    */ 
   function show_SubPages($subPage_type){  
  if($subPage_type == 1){  
  $this->subPageCss1();  
  }elseif ($subPage_type == 2){  
  $this->subPageCss2();  
  }  
    }  
  
  
   /* 
  用来给建立分页的数组初始化的函数。 
    */ 
   function initArray(){  
  for($i=0;$i<$this->sub_pages;$i++){  
  $this->page_array[$i]=$i;  
  }  
  return $this->page_array;  
    }  
  
  
   /* 
  construct_num_Page该函数使用来构造显示的条目 
  即使:[1][2][3][4][5][6][7][8][9][10] 
    */ 
   function construct_num_Page(){  
  if($this->pageNums < $this->sub_pages){  
  $current_array=array();  
   for($i=0;$i<$this->pageNums;$i++){   
   $current_array[$i]=$i+1;  
   }  
  }else{  
  $current_array=$this->initArray();  
   if($this->current_page <= 3){  
    for($i=0;$i<count($current_array);$i++){  
    $current_array[$i]=$i+1;  
    }  
   }elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){  
    for($i=0;$i<count($current_array);$i++){  
    $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;  
    }  
   }else{  
    for($i=0;$i<count($current_array);$i++){  
    $current_array[$i]=$this->current_page-2+$i;  
    }  
   }  
  }  
   
  return $current_array;  
    }  
  
   /* 
    构造普通模式的分页 
    共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页] 
    */ 
   function subPageCss1(){  
    $subPageCss1Str="";  
    $subPageCss1Str.="共".$this->nums."条记录,";  
    $subPageCss1Str.="每页显示".$this->each_disNums."条,";  
    $subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";  
  if($this->current_page > 1){  
  $firstPageUrl=$this->subPage_link."1";  
  $prewPageUrl=$this->subPage_link.($this->current_page-1);  
  $subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] ";  
  $subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] ";  
  }else {  
  $subPageCss1Str.="[首页] ";  
  $subPageCss1Str.="[上一页] ";  
  }  
   
  if($this->current_page < $this->pageNums){  
  $lastPageUrl=$this->subPage_link.$this->pageNums;  
  $nextPageUrl=$this->subPage_link.($this->current_page+1);  
  $subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] ";  
  $subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] ";  
  }else {  
  $subPageCss1Str.="[下一页] ";  
  $subPageCss1Str.="[尾页] ";  
  }  
   
  return $subPageCss1Str;  
   
    }  
  
  
   /* 
    构造经典模式的分页 
    当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页] 
    */ 
   function subPageCss2(){  
    $subPageCss2Str="";  
    $subPageCss2Str.="当前第<span style=color:red;>".$this->current_page."</span>/".$this->pageNums."页 ";  
   
   
  if($this->current_page > 1){  
  $firstPageUrl=$this->subPage_link."1";  
  $prewPageUrl=$this->subPage_link.($this->current_page-1);  
  $subPageCss2Str.="<a href='$firstPageUrl'>首页</a> ";  
  $subPageCss2Str.="<a href='$prewPageUrl'><<</a>";  
  }else {
  $subPageCss2Str.="<span class=disabled>首页</span>";
  $subPageCss2Str.="<span class=disabled><<</span>";
  }  
   
    $a=$this->construct_num_Page();  
  for($i=0;$i<count($a);$i++){  
  $s=$a[$i];  
   if($s == $this->current_page ){  
   $subPageCss2Str.="<span style='color:red;font-weight:bold;'>".$s."</span>";  
   }else{  
   $url=$this->subPage_link.$s;  
   $subPageCss2Str.="<span class=current><a href='$url'>".$s."</a></span>";  
   }  
  }   
  if($this->current_page < $this->pageNums){  
  $lastPageUrl=$this->subPage_link.$this->pageNums;  
  $nextPageUrl=$this->subPage_link.($this->current_page+1);  
  $subPageCss2Str.=" <a href='$nextPageUrl'>>></a> ";  
  $subPageCss2Str.="<a href='$lastPageUrl'>尾页</a> ";  
  }else {
  $subPageCss2Str.="<span class=disabled>>></span>";
  $subPageCss2Str.="<span class=disabled>尾页</span>";
  }    
  return $subPageCss2Str;  
    }  
 }  
?>  

<?php
    class My_Lib_page{
        //当前页
        var $page = 1;
        //每页显示条数
        var $size = 20;
        //总记录数
        var $count;
        //每栏显示条数
        var $lun = 10;
        //参数绑订
        var $param;
        //跳转
        var $run;
        //name=admin&pwd=2132&sex=1
        //$_GET['name'] = admin;
        private function setParam(){
            $param = $this->param;
            unset($param['page']);
            if(is_array($param) && !empty($param)){
                foreach($param as $key=>$value){
                    $data[] = $key."/".$value;
                }
                $this->url = implode("/",$data);
                $this->param = $this->url;
                $this->url = "/".$this->url;
            }else{
                if(!empty($param)){
                    $this->url = $param;
                    $this->param = $this->url;
                    $this->url = "/".$this->url;
                }
            }
        }
       
        function pageDate(){
            $this->setParam();
            $num = ceil($this->lun/2);
            $this->page = intval($this->page);
            $this->page = $this->page <= 0 ? 1 : $this->page;
           
            $cpage['countPage'] = ceil($this->count/$this->size); //总页数

            $cpage['page'] = $this->page > $cpage['countPage'] ? $cpage['countPage']:$this->page ;
            //当前页

            //显示总数
            $cpage['lun'] = $cpage['countPage'] < $this->lun ? $cpage['countPage'] : $this->lun;

            //开始页码
            $cpage['start'] = $this->page > $num-1 ? $this->page-$num+1 : 1;
           
            $cpage['start'] = ($cpage['start']+$cpage['lun'])>=$cpage['countPage'] ? $cpage['countPage']-$cpage['lun']+1 : $cpage['start'];
           
            //参数显示
            $cpage['url'] = $this->url;

            //控制跳转
            $cpage['run'] = $this->run ? 1 : 0;
            $cpage['param'] = is_array($this->param) ? '': "?".$this->param;
            return $cpage;
        }
    }

    /*include "../inc/smarty.php";
    $cp = new page;


    empty($_REQUEST['page']) || $cp->page = $_REQUEST['page'];
    $cp->count = 70000;
    $cp->param =  $_GET;
    $cp->size = 100;
    $cp->lun = 7;
    $cp->run = true;
    $data = $cp->pageDate();
    $smarty->assign("page",$data);
    $smarty->display("cpage.html");
    */
?>

<?php

class My_Lib_upfile{

 var $upfile, $upfile_name, $upfile_size;
 # $upfile 临时文件名 $_FILES['tmp_name'] ,$upfile_name 文件名 $_FILES['name'] ,$upfile_size 文件大小$_FILES['size'];

 var $new_upfile_name;   # 上传后的文件名称 ;
 var $fleth, $fileExtent; # 文件扩展名(类型) ;
 var $f1, $f2, $f3;   # 文件保存路径(多级) upfiles/2008-01/08/;
 var $filename;    # 文件(带路径) ;
 var $filepath; #相对路径用来删除文件;
 var $maxSize, $File_type; # 允许上传文件的大小 允许上传文件的类型 ;

 var $BuildFile,$newFile,$File_width,$File_height,$rate;

 function upfileclass($upfile,$upfile_name,$upfile_size){
        $this->upfile = $upfile;
        $this->upfile_name = $upfile_name;
        $this->upfile_size = $upfile_size;
        $this->new_upfile_name = $this->CreateNewFilename($this->upfile_name);
        $this->f1 = "public/upload/images";
        $this->f2 = $this->f1."/".date('Y')."-".date('m');
        $this->f3 = $this->f2."/".date('d');
        $this->filename = $this->f3 . "/" . $this->new_upfile_name;
        $this->maxSize = 5000*1024;    # 文件大小 5000KB
        $this->File_type = "gif/jpg/jpeg/png/bmp"; # 允许上传的文件类型
 }

 # 创建新文件名 (原文件名)
 function CreateNewFilename($file_name){
    $this->fleth = explode(".",$file_name);
    $this->fileExtent = $this->fleth[(int)count($this->fleth)-1]; # 获取文件后缀;
    $tmps教程tr = date('Ymd').rand(0,time()) . "." .$this->fileExtent;    # 创建新文件名;
    return $tmpstr;
 }

 # 检测文件类型是否正确
 function chk_fileExtent(){
    $iwTrue = 0;
    $fle = explode("/",$this->File_type);
    for($i=0; $i < count($fle); $i++){
     if($this->fileExtent == $fle[$i]){
     $iwTrue = (int) $iwTrue + 1;
     }
    }
    if( $iwTrue == 0 ){
  $this->msg("文件不符合 ".$this->File_type." 格式!");
    }
 }

 # 提示错误信息并终止操作
 function msg($Error){
    echo "<script language="javascript教程"> ";
    echo " alert('".$Error."'); ";
    echo " window.history.back(); ";
    echo "</script> ";
    die();
 }

 # 保存文件
 function savefile(){
    $this->chk_fileExtent();
    $this->chk_fileSize();
    $this->CreateFolder( "./".$this->f1 );
    $this->CreateFolder( "./".$this->f2 );
    $this->CreateFolder( "./".$this->f3 );
    return $this->chk_savefile();
 }

 # 检测上传结果是否成功
 function chk_savefile(){
    $copymsg = copy($this->upfile,"./".$this->filename);
    if( $copymsg ){
   return $this->filename;
    }
    else{
   $this->msg("文件上传失败! 请重新上传! ");
    }
 }

 # 创建文件夹
 function CreateFolder($foldername){
    if( !is_dir($foldername) ){
   mkdir($foldername,0777);
    }
 }

 # 检测文件大小
 function chk_fileSize(){
    if( $this->upfile_size > $this->maxSize ){
  $this->msg("目标文件不能大于". $this->maxSize/1024 ." KB");
    }
 }

 # 删除文件($filePath 文件相对路径)
 function Deletefile($filePath){
    if( !is_file($filePath) ){
   return false;
    }
    else{
   $ending = @unlink($filePath);
   return $ending;
    }
 }

 

}
?>

/*
    函数:生成缩略图
  MakeBuild("images/a.jpg","news/b.jpg","100");
    参数:
    echo $BuildFile;   原图 带路径
    echo $newFile;    生成的缩略图 带路径
    echo $File_width;   缩略图宽度值
    echo $File_height;   缩略图高度值 (默认为宽度的比例值)
    echo $rate;     缩略图象品质;
 */
 function MakeBuild($BuildFile,$newFile,$File_width,$File_height=0,$rate=1000) {
    if(!is_file($BuildFile)){
   $this->msg("文件 ".$BuildFile." 不是一个有效的图形文件! 系统无法生成该文件的缩略图!");
   return false;
    }
    $data = GetImageSize($BuildFile);
    switch($data[2]){
  case 1:
   $im = @ImageCreateFromGIF($BuildFile);
   break;
  case 2:
   $im = @ImageCreateFromJPEG($BuildFile);
   break;
  case 3:
   $im = @ImageCreateFromPNG($BuildFile);
   break;
    }
    if(!$im){
   return false;
    }
    else{
   $srcW = ImageSX($im);  # 取得原图宽度;
   $srcH = ImageSY($im); # 取得原图高度;
   $dstX = 0;
   $dstY = 0;
   
  if($File_height==0){
   $File_height = $File_width/$srcW*$srcH;
  }
   
  if ($srcW*$File_height>$srcH*$File_width){
   $fFile_height = round($srcH*$File_width/$srcW);
   $dstY = floor(($File_height-$fFile_height)/2);
   $fFile_width = $File_width;
  }
  else {
   $fFile_width = round($srcW*$File_height/$srcH);
   $dstX = floor(($File_width-$fFile_width)/2);
   $fFile_height = $File_height;
  }
  $ni = ImageCreateTrueColor($File_width,$File_height);
  $dstX = ($dstX<0)?0:$dstX;
  $dstY = ($dstX<0)?0:$dstY;
  $dstX = ($dstX>($File_width/2))?floor($File_width/2):$dstX;
  $dstY = ($dstY>($File_height/2))?floor($File_height/s):$dstY;
  ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fFile_width,$fFile_height,$srcW,$srcH);
   
  ImageJpeg($ni,$newFile,$rate); # 生成缩略图;
  imagedestroy($im);     # imagedestroy(resource) 释放image关联的内存
    }
 }

PHP Date / Time 函数
定义和用法
mktime() 函数返回一个日期的 Unix 时间戳。

参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

语法
mktime(hour,minute,second,month,day,year,is_dst)参数 描述
hour 可选。规定小时。
minute 可选。规定分钟。
second 可选。规定秒。
month 可选。规定用数字表示的月。
day 可选。规定天。
year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
is_dst 可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。
 
提示和注释
注释:在 PHP 5.1 之前,如果该函数的参数非法,则会返回 false。
例子
mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:

<?php教程
echo(date("M-d-Y",mktime(0,0,0,12,36,2001)));
echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));
echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));
echo(date("M-d-Y",mktime(0,0,0,1,1,99)));
?>输出:

Jan-05-2002
Feb-01-2002
Jan-01-2001
Jan-01-1999


Example #1 mktime() basic example

<?php
// Set the default timezone to use. Available as of PHP 5.1
date_default_timezone_set('UTC');

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

// Prints something like: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>
mktime()是很有用做日期计算和验证,因为它会自动计算出正确的值的范围输入。例如,下面的每一行都会产生字符串“Jan - 01 - 1998”

<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>


<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?>

[!--infotagslink--]

相关文章

  • php KindEditor文章内分页的实例方法

    我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
  • 自己动手写的jquery分页控件(非常简单实用)

    最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • jquery实现的伪分页效果代码

    本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • Springboot如何使用mybatis实现拦截SQL分页

    这篇文章主要介绍了Springboot使用mybatis实现拦截SQL分页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-19
  • PHP 一个完整的分页类(附源码)

    在php中要实现分页比起asp中要简单很多了,我们核心就是直接获取当前页面然后判断每页多少再到数据库中利用limit就可以实现分页查询了,下面我来详细介绍分页类实现程序...2016-11-25
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • AngularJS实现分页显示数据库信息

    这篇文章主要为大家详细介绍了AngularJS实现分页显示数据库信息效果的相关资料,感兴趣的小伙伴们可以参考一下...2016-07-06
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • jquery实现的伪分页效果代码

    本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
  • 基于jquery实现表格无刷新分页

    这篇文章主要介绍了基于jquery实现表格无刷新分页,功能实现了前端排序功能,增加了前端搜索功能,感兴趣的小伙伴们可以参考一下...2016-01-08
  • vue实现页面打印自动分页的两种方法

    这篇文章主要为大家详细介绍了vue实现页面打印自动分页的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-29
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15