重写ecshop分页函数get_pager

重写ecshop分页函数get_pager

原文  http://blog.cnsolomo.com/ld/php/203.html

在分页的时候要按照自己的需求分页,所有在ecshop原有的分页函数基础上进行了修改:

function my_get_pager($url,$param,$record_count,$page = 1,$size = 10){

$size =intval($size);//每页显示几条记录 
    if($size<1){ //如果每页显示的记录小于1的话 
        $size = 10;//将每页显示记录条数设置为10 
    } 
     
    $page = intval($page);///当前页码 
    if ($page < 1) ///如果当前页码小于1的话 
    { 
        $page = 1;///将当前页码默认设置为1 
    } 
    $record_count = intval($record_count);///记录总数量 
     
    $page_count = $record_count > 0 ? intval(ceil($record_count / $size)) : 1; ///总页数
    if ($page > $page_count) ///如果当前页码大于总页数 
    { 
        $page = $page_count;///则将总页数赋值给当前页码 
    }

$page_prev  = ($page > 1) ? $page – 1 : 1; ///前一页 
    $page_next  = ($page < $page_count) ? $page + 1 : $page_count; ///后一页

/* 将参数合成url字串 */ 
    $param_url = ‘?‘;  ///参数组成的url字符串 如:"?act=list" 
    foreach ($param AS $key => $value) ///键值对数组参数 
    { 
        $param_url .= $key . ‘=‘ . $value . ‘&‘; ///"?号后面的参数" 
    } 
     
    $pager[‘url‘]          = $url; ///第一个参数,是一个文件名 如:get_comment.php 
    $pager[‘start‘]        = ($page -1) * $size; ///查询时的起始位置 
    $pager[‘page‘]         = $page; ///当前页 
    $pager[‘size‘]         = $size; ///每页显示的记录条数 
    $pager[‘record_count‘] = $record_count;  ///记录总数 
    $pager[‘page_count‘]   = $page_count; ///总页数     
     
        $_pagenum = 10;     // 显示的页码 
        $_offset = 2;       // 当前页偏移值 
        $_from = $_to = 0;  // 开始页, 结束页     
     
    if($_pagenum > $page_count) ///如果显示的页码 大于 总页数,如:显示10页 总页数为8 则显示1-8 
    { 
        $_from = 1; ///从1开始 
        $_to = $page_count; ///到 总页数 为止 
    } 
    else ///如果 显示的页码 小于 总页码,如:显示10页 总页数为15 
    {///(1)假如当前页为2,则$_from为0,$_to为9   (2)假如当前页为6,则$_from为4,$_to为13   
        $_from = $page – $_offset;    ;///(1)$_from为0 (2)$_from为4 当前页-当前页偏移量,如: 1-10、2-11、3-12、4-13、5-14、6-15、不会出现7-16、8-17,因为总页数是15  
        $_to = $_from + $_pagenum – 1; ///(1)$_to为9 (2)$_to为13 
        if($_from < 1) 
        { 
            $_to = $page + 1 – $_from; ///(1)则$_to为3 
            $_from = 1; ///(1)$_from重新复制为1 
            if($_to – $_from < $_pagenum) //(1)3-1 小于 要显示的页码数 
            { 
                $_to = $_pagenum; ///(1)则$_to重新复制为10 
            } 
        } 
        elseif($_to > $page_count) //(2)如果13 大于 10的话           如果14 大于 10的话 
        { 
            $_from = $page_count – $_pagenum + 1; ///(2)$_from为起始页数:15-10+1=6 
            $_to = $page_count; //(2)$_to为总页数:15 
        } 
    } 
    $url_format = $url . $param_url . ‘page=‘; 
    $pager[‘page_first‘] = ($page – $_offset > 1 && $_pagenum < $page_count) ? $url_format . 1 : ‘‘; 
    $pager[‘page_prev‘]  = ($page > 1) ? $url_format . $page_prev : ‘‘; 
    $pager[‘page_next‘]  = ($page < $page_count) ? $url_format . $page_next : ‘‘; 
    $pager[‘page_last‘]  = ($_to < $page_count) ? $url_format . $page_count : ‘‘; 
    $pager[‘page_number‘] = array(); 
    for ($i=$_from;$i<=$_to;++$i) 
    { 
        $pager[‘page_number‘][$i] = $url_format . $i; 
    } 
    return $pager; 
 };

返回的$pager 数组里面包含了第一页/末页 、上一页/下一页 已经分页显示的码数及地址,赋值到前端页面即可实习自定义分页!

时间: 2024-10-11 02:07:57

重写ecshop分页函数get_pager的相关文章

ECSHOP常用函数

lib_time.php gmtime() #获得当前格林威治时间的时间戳 /$0 server_timezone() #获得服务器的时区 /$0 local_mktime($hour = NULL , $minute= NULL, $second = NULL, $month = NULL, $day = NULL, $year = NULL) #生成一个用户自定义时区日期的GMT时间戳 local_date($format, $time = NULL) #将GMT时间戳格式化为用户自定义时区

ecshop前后台函数库整理

开源it 接触ecshop差不多半年了,大致的东西基本上也都掌握,为了提高效率,整理了一下ecshop的一些函数库,包括前台还有后台的. 熟悉这些函数,可以减少不少麻烦,熟悉之后,你遍知道系统有哪些已经写好的功能,很多时候就可以直接拿来用,而不用因为不知道,去手写代码,这样就很不划算了. lib_main.php ECSHOP 前台公用函数库 update_user_info    更新用户SESSION,COOKIE及登录时间.登录次数. get_user_info     获取用户信息数组

自定义调用 ecshop 分页代码(转)

自定义调用 ecshop 分页代码 原文出处:http://blog.sina.com.cn/s/blog_6479ae370100hsq6.html function get_comments($num,$start){     $sql =" SELECT * FROM ecs_comment WHERE status = 1 AND parent_id = 0 and comment_type=0 ORDER BY add_time DESC  limit $start, $num&quo

分页函数

之前在用thinkphp做项目的时候,感觉他的分页函数用着不习惯,自己琢磨着写了一个分页函数,放到这里来,用到的时候可以直接照搬.   public function pagination($count,$page,$limit,$show_page=5){           //总页码 = 总数据量/每一页的数据量 $pagesize           $pagesize = ceil( $count/$limit);           //获取当前页码 $page           

PHPCMS V9二次开发自定义分页函数的解决方案

下面为大家分享一个PHPCMS V9二次开发自定义分页函数的方法. 方法如下: 首先打开 phpcms\libs\functions\global.func.php这个文件,找到分页函数,复制一下,粘贴到默认分页函数的下面,重新命名,比如我的就命名为wz_pages,保存. 打开 phpcms/libs/classes/template_cache.class.php,找到207行的: $str .= '$pages = pages($'.$op.'_total, $page, $pagesiz

php分页函数示例代码,php分页代码实现方法

php分页函数示例代码 分享一例php分页函数代码,用此函数实现分页代码很不错. 代码,php分页函数. <?php /* * Created on 2011-07-28 * Author : LKK , http://lianq.net * 使用方法: require_once('mypage.php'); $result=mysql_query("select * from mytable", $myconn); $total=mysql_num_rows($result);

SQL Server 2012 新的分页函数 OFFSET &amp; FETCH NEXT

DECLARE @page INT, @size INT;select @page = 300, @size = 10 SELECT *FROM gpcomp1.GPCUSTWHERE company like 'a%'ORDER BY CUSTNOOFFSET (@page -1) * @size ROWSFETCH NEXT @size ROWS ONLY; SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT,布布扣,bubuko.com

PHP实现仿Google分页效果的分页函数

本文实例讲述了PHP实现仿Google分页效果的分页函数.分享给大家供大家参考.具体如下: /** * 分页函数 * @param int $total 总页数 * @param int $pagesize 每页几条 * @param string $pkey url中页面变量名称 * @param string $url 基础url,其中的{page}会被替换为页码 * 依赖函数 request_uri httpInt */ function page($total,$pagesize=10,

PHP基于数组的分页函数(核心函数array_slice())

关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要配合使用.两个函数通过全局变量$countpage发生联系,此变量用于跟踪总页码数. <?php /** * 数组分页函数 核心函数 array_slice * 用此函数之前要先将数据库里面的所有数据按一定的顺序查询出来存入数组中 * $count 每页多少条数据 * $pag