首页 后端开发 php教程 一个分页导航类_PHP

一个分页导航类_PHP

Jun 01, 2016 pm 12:36 PM
if link page return the 导航

// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license,      |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Richard Heyes                          |
// +----------------------------------------------------------------------+

/**
* Pager class
*
* Handles paging a set of data. For usage see the example.php provided.
*
*/

class Pager {

    /**
    * Current page
    * @var integer
    */
    var $_currentPage;

    /**
    * Items per page
    * @var integer
    */
    var $_perPage;

    /**
    * Total number of pages
    * @var integer
    */
    var $_totalPages;

    /**
    * Item data. Numerically indexed array...
    * @var array
    */
    var $_itemData;

    /**
    * Total number of items in the data
    * @var integer
    */
    var $_totalItems;

    /**
    * Page data generated by this class
    * @var array
    */
    var $_pageData;

    /**
    * Constructor
    *
    * Sets up the object and calculates the total number of items.
    *
    * @param $params An associative array of parameters This can contain:
    *                  currentPage   Current Page number (optional)
    *                  perPage       Items per page (optional)
    *                  itemData      Data to page
    */
    function pager($params = array())
    {
        global $HTTP_GET_VARS;

        $this->_currentPage = max((int)@$HTTP_GET_VARS['pageID'], 1);
        $this->_perPage     = 8;
        $this->_itemData    = array();

        foreach ($params as $name => $value) {
            $this->{'_' . $name} = $value;
        }

        $this->_totalItems = count($this->_itemData);
    }

    /**
    * Returns an array of current pages data
    *
    * @param $pageID Desired page ID (optional)
    * @return array Page data
    */
    function getPageData($pageID = null)
    {
        if (isset($pageID)) {
            if (!empty($this->_pageData[$pageID])) {
                return $this->_pageData[$pageID];
            } else {
                return FALSE;
            }
        }

        if (!isset($this->_pageData)) {
            $this->_generatePageData();
        }

        return $this->getPageData($this->_currentPage);
    }

    /**
    * Returns pageID for given offset
    *
    * @param $index Offset to get pageID for
    * @return int PageID for given offset
    */
    function getPageIdByOffset($index)
    {
        if (!isset($this->_pageData)) {
            $this->_generatePageData();
        }

        if (($index % $this->_perPage) > 0) {
            $pageID = ceil((float)$index / (float)$this->_perPage);
        } else {
            $pageID = $index / $this->_perPage;
        }

        return $pageID;
    }

    /**
    * Returns offsets for given pageID. Eg, if you
    * pass it pageID one and your perPage limit is 10
    * it will return you 1 and 10. PageID of 2 would
    * give you 11 and 20.
    *
    * @params pageID PageID to get offsets for
    * @return array  First and last offsets
    */
    function getOffsetByPageId($pageid = null)
    {
        $pageid = isset($pageid) ? $pageid : $this->_currentPage;
        if (!isset($this->_pageData)) {
            $this->_generatePageData();
        }

        if (isset($this->_pageData[$pageid])) {
            return array(($this->_perPage * ($pageid - 1)) + 1, min($this->_totalItems, $this->_perPage * $pageid));
        } else {
            return array(0,0);
        }
    }

    /**
    * Returns back/next and page links
    *
    * @param  $back_html HTML to put inside the back link
    * @param  $next_html HTML to put inside the next link
    * @return array Back/pages/next links
    */
    function getLinks($back_html = '>')
    {
        $url   = $this->_getLinksUrl();
        $back  = $this->_getBackLink($url, $back_html);
        $pages = $this->_getPageLinks($url);
        $next  = $this->_getNextLink($url, $next_html);

        return array($back, $pages, $next, 'back' => $back, 'pages' => $pages, 'next' => $next);
    }

    /**
    * Returns number of pages
    *
    * @return int Number of pages
    */
    function numPages()
    {
        return $this->_totalPages;
    }

    /**
    * Returns whether current page is first page
    *
    * @return bool First page or not
    */
    function isFirstPage()
    {
        return ($this->_currentPage == 1);
    }

    /**
    * Returns whether current page is last page
    *
    * @return bool Last page or not
    */
    function isLastPage()
    {
        return ($this->_currentPage == $this->_totalPages);
    }

    /**
    * Returns whether last page is complete
    *
    * @return bool Last age complete or not
    */
    function isLastPageComplete()
    {
        return !($this->_totalItems % $this->_perPage);
    }

    /**
    * Calculates all page data
    */
    function _generatePageData()
    {
        $this->_totalItems = count($this->_itemData);
        $this->_totalPages = ceil((float)$this->_totalItems / (float)$this->_perPage);
        $i = 1;
        if (!empty($this->_itemData)) {
            foreach ($this->_itemData as $value) {
                $this->_pageData[$i][] = $value;
                if (count($this->_pageData[$i]) >= $this->_perPage) {
                    $i++;
                }
            }
        } else {
            $this->_pageData = array();
        }
    }

    /**
    * Returns the correct link for the back/pages/next links
    *
    * @return string Url
    */
    function _getLinksUrl()
    {
        global $HTTP_SERVER_VARS;

        // Sort out query string to prevent messy urls
        $querystring = array();
        if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
            $qs = explode('&', $HTTP_SERVER_VARS['QUERY_STRING']);            
            for ($i = 0, $cnt = count($qs); $i                 list($name, $value) = explode('=', $qs[$i]);
                if ($name != 'pageID') {
                    $qs[$name] = $value;
                }
                unset($qs[$i]);
            }
        }
    if(is_array($qs)){
            foreach ($qs as $name => $value) {
                $querystring[] = $name . '=' . $value;
            }    
    }
        return $HTTP_SERVER_VARS['SCRIPT_NAME'] . '?' . implode('&', $querystring) . (!empty($querystring) ? '&' : ') . 'pageID=';
    }

    /**
    * Returns back link
    *
    * @param $url  URL to use in the link
    * @param $link HTML to use as the link
    * @return string The link
    */
    function _getBackLink($url, $link = '     {
        // Back link
        if ($this->_currentPage > 1) {
            $back = '' . $link . '';
        } else {
            $back = ';
        }
        
        return $back;
    }

    /**
    * Returns pages link
    *
    * @param $url  URL to use in the link
    * @return string Links
    */
    function _getPageLinks($url)
    {
        // Create the range
        $params['itemData'] = range(1, max(1, $this->_totalPages));
        $pager =& new Pager($params);
        $links =  $pager->getPageData($pager->getPageIdByOffset($this->_currentPage));

        for ($i=0; $i             if ($links[$i] != $this->_currentPage) {
                $links[$i] = '' . $links[$i] . '';
            }
        }

        return implode(' ', $links);
    }

    /**
    * Returns next link
    *
    * @param $url  URL to use in the link
    * @param $link HTML to use as the link
    * @return string The link
    */
    function _getNextLink($url, $link = 'Next >>')
    {
        if ($this->_currentPage _totalPages) {
            $next = '' . $link . '';
        } else {
            $next = ';
        }

        return $next;
    }
}

?>

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

c语言if判断多个条件怎么写 c语言if判断多个条件怎么写 Mar 25, 2024 pm 03:24 PM

在C语言中,if语句通常用于基于单个条件执行特定代码块。但是,通过使用逻辑运算符(如 &&、|| 和 !),可以组合多个条件来进行判断。包括使用逻辑与(&&)判断多个条件、使用逻辑或(||)判断至少一个条件、使用逻辑非(!)判断单个条件的否定,以及嵌套if语句和使用括号明确优先级。

C语言return的用法详解 C语言return的用法详解 Oct 07, 2023 am 10:58 AM

C语言return的用法有:1、对于返回值类型为void的函数,可以使用return语句来提前结束函数的执行;2、对于返回值类型不为void的函数,return语句的作用是将函数的执行结果返回给调用者;3、提前结束函数的执行,在函数内部,我们可以使用return语句来提前结束函数的执行,即使函数并没有返回值。

2 个月不见,人形机器人 Walker S 会叠衣服了 2 个月不见,人形机器人 Walker S 会叠衣服了 Apr 03, 2024 am 08:01 AM

机器之能报道编辑:吴昕国内版的人形机器人+大模型组队,首次完成叠衣服这类复杂柔性材料的操作任务。随着融合了OpenAI多模态大模型的Figure01揭开神秘面纱,国内同行的相关进展一直备受关注。就在昨天,国内"人形机器人第一股"优必选发布了人形机器人WalkerS深入融合百度文心大模型后的首个Demo,展示了一些有趣的新功能。现在,得到百度文心大模型能力加持的WalkerS是这个样子的。和Figure01一样,WalkerS没有走动,而是站在桌子后面完成一系列任务。它可以听从人类的命令,折叠衣物

Java中return和finally语句的执行顺序是怎样的? Java中return和finally语句的执行顺序是怎样的? Apr 25, 2023 pm 07:55 PM

源码:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#输出上述代码的输出可以简单地得出结论:return在finally之前执行,我们来看下字节码层面上发生了什么事情。下面截取case1方法的部分字节码,并且对照源码,将每个指令的含义注释在

足球导航语音包在哪个导航软件 足球导航语音包在哪个导航软件 Nov 09, 2022 pm 04:33 PM

足球导航语音包在“高德导航”软件中,是高德地图车机版导航语音包的其中一种,内容为黄健翔足球解说版本的导航语音。设置方法:1、打开高德地图软件;2、点击进入“更多工具”-“导航语音”选项;3、找到“黄健翔热血语音”,点击“下载”;4、在弹出的页面,点击“使用语音”即可。

百度地图 App 最新版本 18.8.0 发布,首次引入红绿灯雷达功能,并新增实时停车推荐功能 百度地图 App 最新版本 18.8.0 发布,首次引入红绿灯雷达功能,并新增实时停车推荐功能 Aug 06, 2023 pm 06:05 PM

百度地图App安卓版/iOS版均已发布18.8.0版本,首次引入红绿灯雷达功能,业内领先据官方介绍,开启红绿灯雷达后,支持开车自动探测红绿灯,不用输入目的地,北斗高精可以实时定位,全国100万+红绿灯自动触发绿波提醒。除此之外,新功能还提供全程静音导航,使图区更简洁,关键信息一目了然,且无语音播报,使驾驶员更加专注驾驶百度地图于2020年10月上线红绿灯倒计时功能,支持实时读秒预判,导航会在接近红绿灯路口时,自动展示倒计时剩余秒数,让用户时刻掌握前方路况。截至2022年12月31日,红绿灯倒计时

导航地图上横着的8字是什么 导航地图上横着的8字是什么 Jun 27, 2023 am 11:43 AM

导航地图上横着的8字是霾,中度是黄色8预警信号,重度是橙色8预警信号。

高德地图推出升级版驾车 ETA 服务:实时解析当前路况,预估到达时间更精准 高德地图推出升级版驾车 ETA 服务:实时解析当前路况,预估到达时间更精准 Apr 30, 2024 am 08:37 AM

本站4月29日消息,高德地图官宣推出升级版的驾车ETA(本站注:ETA即预估到达时间,指的是用户在当前时刻出发按照给定路线前往目的地预计需要的时长)服务,该服务旨在帮助用户的路线规划时长和路况预估更为精准,辅助用户进行出行决策。该地图应用是最新升级的高德地图App,引入了“超大规模图卷积神经网络模型”,该模型可以更好地捕捉和学习交通流动规律,支持城市道路网络、高速公路系统,能以高精度刻画交通状况的时空动态变化。在此外,全新版本的地图还进一步融合了iTransformer时序预测模型,支持实时解析

See all articles