php 经典的分页代码类

 更新时间:2016年11月25日 16:27  点击:1609
这是一款php分页代码是一款经典的可自动判断url参数再进行分页的实例代码,同时自定了上页,下页,首页,尾页哦,同时还支持select下拉框跳转代码。
 代码如下 复制代码

class page{

 var $page_name="page";

 var $next_page='下一页';

 var $pre_page='上一页';

 var $first_page='首页';

 var $last_page='尾页';

 var $pre_bar='<<';

 var $next_bar='>>';

 var $format_left='';

 var $format_right='';

 var $pagebarnum=5;

 var $totalpage=0;

 var $nowindex=1;

 var $url="";

 var $offset=0;

 var $rewrite = array();


 function page($array)

 {

  if(is_array($array)){

     if(!array_key_exists('total',$array))$this->error(__function__,'need a param of total');

     $total=intval($array['total']);

     $perpage=(array_key_exists('perpage',$array))?intval($array['perpage']):10;

     $nowindex=(array_key_exists('nowindex',$array))?intval($array['nowindex']):'';

     $url=(array_key_exists('url',$array))?$array['url']:'';

     $action = (array_key_exists('action', $array)) ? $array['action'] : '';
     $id0 = (array_key_exists('id0', $array)) ? $array['id0'] : '';
  $id1 = (array_key_exists('id1', $array)) ? $array['id1'] : '';
  $id2 = (array_key_exists('id2', $array)) ? $array['id2'] : '';
  $id3 = (array_key_exists('id3', $array)) ? $array['id3'] : '';

  }else{

     $total=$array;

     $perpage=10;

     $nowindex='';

     $url='';

     $action = '';
     $id0 = '';
     $id1 = '';
     $id2 = '';
  $id3 = '';

  }

  if((!is_int($total))||($total<0))$this->error(__function__,$total.' is not a positive integer!');

  if((!is_int($perpage))||($perpage<=0))$this->error(__function__,$perpage.' is not a positive integer!');

  if(!empty($array['page_name']))$this->set('page_name',$array['page_name']);

  $this->_set_nowindex($nowindex);

  $this->_set_url($url);

  $this->totalpage=ceil($total/$perpage);

  $this->offset=($this->nowindex-1)*$perpage;

  $this->action = $action;
  $this->rewrite = array('action'=>$action,'id0'=>$id0, 'id1'=>$id1, 'id2'=>$id2, 'id3'=>$id3);
 }

 function set($var,$value)
 {

  if(in_array($var,get_object_vars($this)))

     $this->$var=$value;

  else {

   $this->error(__function__,$var." does not belong to pb_page!");

  }

 }

 function next_page($style=''){
  if($this->nowindex<$this->totalpage){
  return $this->_get_link($this->_get_url($this->nowindex+1),$this->next_page,$style);
 }
 return '<a class="'.$style.'">'.$this->next_page.'</a>';
 }

 function pre_page($style=''){
  if($this->nowindex>1){
    return $this->_get_link($this->_get_url($this->nowindex-1),$this->pre_page,$style);
  }
  return '<a class="'.$style.'">'.$this->pre_page.'</a>';
 }

 function first_page($style=''){
  if($this->nowindex==1){
     return '<a class="'.$style.'">'.$this->first_page.'</a>';
  }
  return $this->_get_link($this->_get_url(1),$this->first_page,$style);
 }

 function last_page($style=''){
  if($this->nowindex==$this->totalpage||$this->totalpage==0){

      return '<a class="'.$style.'">'.$this->last_page.'</a>';

  }

  return $this->_get_link($this->_get_url($this->totalpage),$this->last_page,$style);

 }


 function nowbar($style='',$nowindex_style='')

 {

  $plus=ceil($this->pagebarnum/2);

  if($this->pagebarnum-$plus+$this->nowindex>$this->totalpage)$plus=($this->pagebarnum-$this->totalpage+$this->nowindex);

  $begin=$this->nowindex-$plus+1;

  $begin=($begin>=1)?$begin:1;

  $return='';

  for($i=$begin;$i<$begin+$this->pagebarnum;$i++)

  {

   if($i<=$this->totalpage){

    if($i!=$this->nowindex)

        $return.=$this->_get_text($this->_get_link($this->_get_url($i),$i,$style));

    else

        $return.=$this->_get_text('<a class="'.$nowindex_style.'">'.$i.'</a>');

   }else{

    break;

   }

   $return.=" ";

  }

  unset($begin);

  return $return;

 }

 /**

  * 获取显示跳转按钮的代码

  *

  * @return string

  */

 function select()

 {

   $return='<select name="pb_page_select">';

  for($i=1;$i<=$this->totalpage;$i++)

  {

   if($i==$this->nowindex){

    $return.='<option value="'.$i.'" selected>'.$i.'</option>';

   }else{

    $return.='<option value="'.$i.'">'.$i.'</option>';

   }

  }

  unset($i);


  $return.='</select>';

  return $return;

 }

 

 /**

  * 获取mysql教程 语句中limit需要的值

  *

  * @return string

  */

 function offset()

 {

  return $this->offset;

 }

 

 /**

  * 控制分页显示风格(你可以增加相应的风格)

  *

  * @param int $mode

  * @return string

  */

 function show($mode=1)

 {

  switch ($mode)

  {

   case '1':

    $this->next_page='下一页';

    $this->pre_page='上一页';

    return $this->pre_page().$this->nowbar().$this->next_page().'第'.$this->select().'页';

    break;

   case '2':

    $this->next_page='下一页';

    $this->pre_page='上一页';

    $this->first_page='首页';

    $this->last_page='尾页';

    return $this->first_page().$this->pre_page().'[第'.$this->nowindex.'页]'.$this->next_page().$this->last_page().'第'.$this->select().'页';

    break;

   case '3':

    $this->next_page='下一页';

    $this->pre_page='上一页';

    $this->first_page='首页';

    $this->last_page='尾页';

    return $this->first_page("page_box")."".$this->pre_page("page_box")."".$this->nowbar("page_box_a","page_box_b")."".$this->next_page("page_box")."".$this->last_page("page_box")."<a class="clear"></a>";

    break;

   case '4':

    $this->next_page='下一页';

    $this->pre_page='上一页';

    return $this->pre_page().$this->nowbar().$this->next_page();

    break;

   case '5':

    return $this->pre_bar().$this->pre_page().$this->nowbar().$this->next_page().$this->next_bar();

    break;

  }

 

 }

 function _set_url($url="")

 {

  if(!empty($url)){

   $this->url=$url.((stristr($url,'?'))?'&':'?').$this->page_name."=";

  }else{

   if(empty($_server['query_string'])){

    $this->url=$_server['request_uri']."?".$this->page_name."=";

   }else{

    if(stristr($_server['query_string'],$this->page_name.'=')){

     $this->url=str_replace($this->page_name.'='.$this->nowindex,'',$_server['request_uri']);

     $last=$this->url[strlen($this->url)-1];

     if($last=='?'||$last=='&'){

         $this->url.=$this->page_name."=";

     }else{

         $this->url.='&'.$this->page_name."=";

     }

    }else{

     $this->url=$_server['request_uri'].'&'.$this->page_name.'=';

    }

   }

  }

 }


 function _set_nowindex($nowindex)

 {

  if(empty($nowindex)){

   if(isset($_get[$this->page_name])){

    $this->nowindex=intval($_get[$this->page_name]);

   }

  }else{

   $this->nowindex=intval($nowindex);

  }

 }

 function _get_url($pageno=1)
 {
  global $_cfg;
  $arr = $this->rewrite;
 //print_r($arr);
 //print_r($this->url.$pageno);
  if($_cfg['urlrewrite'] && !empty($arr['action'])){
   return url_rewrite($arr['action'], array('id0'=>$arr['id0'],'id1'=>$arr['id1'],'id2'=>$arr['id2'],'id3'=>$arr['id3'],'page'=>$pageno));
  }else{
   return $this->url.$pageno;
  }

 }

 function _get_text($str)

 {

  return $this->format_left.$str.$this->format_right;

 }

 function _get_link($url,$text,$style=''){

  $style=(empty($style))?'':'class="'.$style.'"';

  return '<a '.$style.' href="'.$url.'">'.$text.'</a>';

 }


 function error($function,$errormsg)

 {

     die('error in file <b>'.__file__.'</b> ,function <b>'.$function.'()</b> :'.$errormsg);

 }

}
?>

天气预报信息采集自中央气象台,信息准确,覆盖面广,代码简单。返回是json代码,可以用于客户端调用,也可以在服务器端处理后显示,笔者的wordpress天气预报插件就是使用的这段代码哦。需要注意的是,这段代码会在服务器产生缓存文件,需要在当前目录中新建data文件夹,保证文件夹可写

    

 代码如下 复制代码

作者:    freemouse
     主页:    www.cnphp.info
     接口demo: http://www.cnphp.info/tianqi
     用法: 可以直接调用上面的地址会显示当地的天气信息,也可以这样用
    http://www.cnphp.info/tianqi/?q=江苏省南京市
    **/

    $p = $_get['q'];
    $k = 0;
    $encoding = mb_detect_encoding($p);
    if($encoding != "utf-8"){
        $p = mb_convert_encoding($p,"utf-8","gbk");
    }
    $p_arr = array(
       "01" => "北京",
      "02" => "上海",
      "03" => "天津",
      "04" => "重庆",
      "05" => "黑龙江",
      "06" => "吉林",
      "07" => "辽宁",
      "08" => "内蒙古",
      "09" => "河北",
      "10" => "山西",
      "11" => "陕西",
      "12" => "山东",
      "13" => "新疆",
      "14" => "西藏",
      "15" => "青海",
      "16" => "甘肃",
      "17" => "宁夏",
      "18" => "河南",
      "19" => "江苏",
      "20" => "湖北",
      "21" => "浙江",
      "22" => "安徽",
      "23" => "福建",
      "24" => "江西",
      "25" => "湖南",
      "26" => "贵州",
      "27" => "四川",
      "28" => "广东",
      "29" => "云南",
      "30" => "广西",
      "31" => "海南",
      "32" => "香港",
      "33" => "澳门",
      "34" => "台湾"
    );
 
    function find(&$item,$key,$data){
        global $k;
        if(preg_match("/$item/u",$data)){
           $k = $key;
        }
    }
 
    function get_data_arr($key){
        if(!file_exists("./data/city{$key}.xml")){
            $c =file_get_contents( "http://m.weather.com.cn/data5/city{$key}.xml" );
            file_put_contents("./data/city{$key}.xml",$c);
        }
        else{
            $c = file_get_contents("./data/city{$key}.xml");
        }
       $arr = explode(",",$c);
       foreach($arr as $v){
           $data = explode("|",$v);
           $ret[$data[0]] = $data[1];
       }
       return $ret;
    }
 
    array_walk($p_arr,'find',$p);
    array_walk(get_data_arr($k),'find',$p);
    array_walk(get_data_arr($k),'find',$p);
    $ccode = get_data_arr($k);
    echo file_get_contents("http://m.weather.com.cn/data/{$ccode[$k]}.html");

 

 代码如下 复制代码

用法:
application('key','value'); //设置 key=value
$value = application('key'); //获取 key的值
*/

function application()
{
 $args = func_get_args(); //获取输入参数
 if (count($args) >2 || count($args) < 1) return;
 $ssid = session_id(); //保存当前session_id
 session_write_close(); //结束当前session
 ob_start(); //禁止全局session发送header
 session_id("xxx"); //注册全局session_id
 session_start(); //开启全局session
 $key = $args[0];
 if (count($args) == 2) //如果有第二个参数,那么表示写入全局session
 {
  $re = ($_session[$key] = $args[1]);
 }
 else // 如果只有一个参数,那么返回该参数对应的value
 {
  $re = $_session[$key];
 }
 session_write_close(); //结束全局session
 session_id($ssid); //重新注册上面被中断的非全局session
 session_start(); //重新开启
 ob_end_clean(); //抛弃刚刚由于session_start产生的一些header输出
 return $re;
}

 

下面这二款函数是二款双字节字符串截取函数,那就是针对中文字符串截取了,好了第一款汉字中文截取函数是越级简洁了,后一款复杂但考虑更多一些。

<?
//php教程 中文字符串截取函数
/*

*/

 代码如下 复制代码
function substr($str = '', $offset = 0, $len = 0){
    $len || ($len = strlen($str));
    preg_match_all('/./us', $str, $result);
    return implode('', array_slice($result[0], $offset, $len));
}

//方法二

 代码如下 复制代码

if (!function_exists('mb_substr')) {
function mb_substr($str, $start, $len = '', $encoding="utf-8"){
  $limit = strlen($str);

  for ($s = 0; $start > 0;--$start) {// found the real start
    if ($s >= $limit)
      break;

    if ($str[$s] <= "")
      ++$s;
    else {
      ++$s; // skip length

      while ($str[$s] >= "€" && $str[$s] <= "�")
        ++$s;
    }
  }

  if ($len == '')
    return substr($str, $s);
  else
    for ($e = $s; $len > 0; --$len) {//found the real end
      if ($e >= $limit)
        break;

      if ($str[$e] <= "")
        ++$e;
      else {
        ++$e;//skip length

        while ($str[$e] >= "€" && $str[$e] <= "�" && $e < $limit)
          ++$e;
      }
    }

  return substr($str, $s, $e - $s);
}
}

?>

这二款文件上传程序是非常简单的,很适合初学者的学习php时的文件上传实例教程哦。
 代码如下 复制代码

if(!$uploadaction):
?>

<html>
<head>
<title>文件上载界面</title>
</head>
<body>

<table>
<tr align="center">
<td><form enctype="multipart/form-data" name="submitform" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="1000000"><input type="hidden" name="uploadaction" value="1">
</td></tr>
<tr align="center">
<td><input name="uploadfile" type="file" size="30"></td>
</tr>
<tr align="center">
<td><input name="submit" value="提交" type="submit"></td>
<td><input name="reset" value="重置" type="reset"></td>
</tr>
</form>
</table>
</center>
</body>
</html>

<?
else:
?>

<html>
<head>
<title>文件上载代码</title>
</head>
<body>

<?
$uploadaction=0;
echo "good!";
$timelimit=60; /*设置超时限制时间 缺省时间为30秒 设置为0时为不限时 */
set_time_limit($timelimit);

if(($uploadfile !="none" ))
{  
    $uploadpath=addslashes(dirname($path_translated))."\upload\"; //上载文件存放路径

    $filename=$uploadpath.$uploadfile_name; //上载文件名

    if($uploadfile_size < 1024) //上载文件大小
    {
  $filesize=(string)$uploadfile_size." 字节"; 
 }
     elseif ($uploadfile_size <(1024 * 1024))
     {
  $filesize=number_format((double)($uploadfile_size/1024), 1) . " kb";
     }
  else{
  $filesize=number_format((double)($uploadfile_size / (1024 * 1024)), 1) . " mb";
     }
   
    if(!file_exists($filename))
    {
         if(copy($uploadfile,$filename))
         {  echo "文件 $uploadfile_name ($filesize)上载成功!"; }
         else
         { echo "文件 $uploadfile_name上载失败!"; }

         unlink($uploadfile);
    }
    else
    { echo "文件 $uploadfile_name已经存在!"; }
}
else
{ echo "你没有选择任何文件上载!"; }

set_time_limit(30); //恢复缺省超时设置

?>

<br><a href = "upload.php">返回</a>

</body>
</html>

<?
endif;
?>

方法二

<html>
<head>
<title>文件上传</title>
</head>
<body>
<table>
<form enctype="multipart/form-data" name=myform method="post">
<tr><td>文件上传</td><td><input name="myfile" type="file"></td></tr>
<tr><td colspan="2"><input name="submit" value="上传" type="submit">
</form>
<?php
if(isset($submit)){
 if($myfile != "none") {
  $upload_dir = "c:winnt emp";
  $up=copy($myfile,$upload_dir);
  if($up==1) {
   print("文件上传成功!");
  }
  else {
   print ("文件上传失败.");
  }
  unlink ($myfile);
 }
 else {
  print("你没有上传任何文件");   
 }
}
?>
</td></tr>
</table>
</body>
</html>

[!--infotagslink--]

相关文章

  • php svn操作类

    以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • php KindEditor文章内分页的实例方法

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

    最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • jquery实现的伪分页效果代码

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

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • vue.js 表格分页ajax 异步加载数据

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