有现成的分页函数吗,自己写太麻烦了。哪个分页太麻烦了。谢谢。分页

解决方案 »

  1.   

    GOOGLE搜索一大堆,分页是比较基本的PHP应用,你干这行迟早要懂的他的原理。
      

  2.   

    <?php
    /** 作者:潇湘博客 时间: 
    2009-11-26 
    使用方法: 
    include_once'Pager.class.php'; 
    $pager=new Pager(); 
    if(isset($_GET['page'])) 
    $pager->setCurrentPage($_GET['page']); 
    else 
    $pager->setCurrentPage(1); $pager->setRecorbTotal(1000); 
    $pager->setBaseUri("page.php?"); 
    echo $pager->execute(); **/
    $pager = new Pager();
    if (isset($_GET['page'])) {
        $pager->setCurrentPage($_GET['page']);
    } else {
        $pager->setCurrentPage(1);
    }
    $pager->setRecorbTotal(1000);
    $pager->setBaseUri('2.php?');
    $aa = $pager->execute();
    class Pager
    {
        /** 
        *int总页数 
        **/
        protected $pageTotal;
        /** 
        *int上一页 
        **/
        protected $previous;
        /** 
        *int下一页 
        **/
        protected $next;
        /** 
        *int中间页起始序号 
        **/
        protected $startPage;
        /** 
        *int中间页终止序号 
        **/
        protected $endPage;
        /** 
        *int记录总数 
        **/
        protected $recorbTotal;
        /** 
        *int每页显示记录数 
        **/
        protected $pageSize;
        /** 
        *int当前显示页 
        **/
        protected $currentPage;
        /** 
        *string基url地址 
        **/
        protected $baseUri;
        /** 
        *@returnstring获取基url地址 
        */
        public function getBaseUri()
        {
            return $this->baseUri;
        }
        /** 
        *@returnint获取当前显示页 
        */
        public function getCurrentPage()
        {
            return $this->currentPage;
        }
        /** 
        *@returnint获取每页显示记录数 
        */
        public function getPageSize()
        {
            return $this->pageSize;
        }
        /** 
        *@returnint获取记录总数 
        */
        public function getRecorbTotal()
        {
            return $this->recorbTotal;
        }
        /** 
        *@paramstring$baseUri设置基url地址 
        */
        public function setBaseUri($baseUri)
        {
            $this->baseUri = $baseUri;
        }
        /** 
        *@paramint$currentPage设置当前显示页 
        */
        public function setCurrentPage($currentPage)
        {
            $this->currentPage = $currentPage;
        }
        /** 
        *@paramint$pageSize设置每页显示记录数 
        */
        public function setPageSize($pageSize)
        {
            $this->pageSize = $pageSize;
        }
        /** 
        *@paramint$recorbTotal设置获取记录总数 
        */
        public function setRecorbTotal($recorbTotal)
        {
            $this->recorbTotal = $recorbTotal;
        }
        /** 
        *构造函数 
        **/
        public function __construct()
        {
            $this->pageTotal = 0;
            $this->previous = 0;
            $this->next = 0;
            $this->startPage = 0;
            $this->endPage = 0;
            $this->pageSize = 20;
            $this->currentPage = 0;
        }
        /** 
        *分页算法 
        **/
        private function arithmetic()
        {
            if ($this->currentPage < 1) {
                $this->currentPage = 1;
            }
            $this->pageTotal = floor($this->recorbTotal / $this->pageSize) + ($this->recorbTotal % $this->pageSize > 0 ? 1 : 0);
            if ($this->currentPage > 1 && $this->currentPage > $this->pageTotal) {
                header((('location:' . $this->baseUri) . 'page=') . $this->pageTotal);
            }
            $this->next = $this->currentPage + 1;
            $this->previous = $this->currentPage - 1;
            $this->startPage = $this->currentPage + 5 > $this->pageTotal ? $this->pageTotal - 10 : $this->currentPage - 5;
            $this->endPage = $this->currentPage < 5 ? 11 : $this->currentPage + 5;
            if ($this->startPage < 1) {
                $this->startPage = 1;
            }
            if ($this->pageTotal < $this->endPage) {
                $this->endPage = $this->pageTotal;
            }
        }
        /** 
        *分页样式 
        **/
        protected function pageStyle()
        {
            $result = ('共' . $this->pageTotal) . '页';
            if ($this->currentPage > 1) {
                $result .= ((('<a href="' . $this->baseUri) . 'page=1"><font>首页</font></a> <a href="') . $this->baseUri) . "page={$this->previous}\"><font>上一页</font></a>";
            } else {
                $result .= '<font>第1页</font> <font></font>';
            }
            for ($i = $this->startPage; $i <= $this->endPage; $i++) {
                if ($this->currentPage == $i) {
                    $result .= "<font color=\"#ff0000\">{$i}</font>";
                } else {
                    $result .= (' <a href="' . $this->baseUri) . "page={$i}\">{$i}</a> ";
                }
            }
            if ($this->currentPage != $this->pageTotal) {
                $result .= ('<a href="' . $this->baseUri) . "page={$this->next}\"><font >下一页</font></a> ";
                $result .= ('<a href="' . $this->baseUri) . "page={$this->pageTotal}\"><font >末页</font></a>";
            } else {
                $result .= '<font >末页</font> ';
            }
            return $result;
        }
        /** 
        *执行分页 
        **/
        public function execute()
        {
            if ($this->baseUri != '' && $this->recorbTotal == 0) {
                return '';
            }
            $this->arithmetic();
            return $this->pageStyle();
        }
    }
    ?>
    <style> a {
         margin:6px;
      }
    </style>
    <?php echo $aa;?>
      

  3.   

    http://bbs.csdn.net/topics/380148088http://bbs.csdn.net/topics/380148128这儿有源码
      

  4.   

    分页结合limit X,X不是很容易就实现了么