>  기사  >  백엔드 개발  >  PHP 페이징 클래스 구현

PHP 페이징 클래스 구현

黄舟
黄舟원래의
2017-11-11 10:05:121602검색

이전 두 기사에서는 PHP 페이징의 원리와 페이징 구현 효과를 이해하는 데 도움을 주었습니다. 두 기사 모두 개발 시 페이징 구현에 관한 것이며 매번 많은 php 코드를 작성해야 하므로 페이징을 캡슐화하고 클래스로 작성하여 나중에 직접 호출할 수 있습니까? 오늘은 사용하기 쉽고 아름다운 PHP페이지 매김 수업을 여러분과 공유하겠습니다!

이 문서에서는 기본 PHP 페이징 클래스를 소개하며 페이징 스타일은 bootstrap과 다소 유사합니다.

<?php
/* * *********************************************
 * @类名:   page
 * @参数:   $myde_total - 总记录数
 *          $myde_size - 一页显示的记录数
 *          $myde_page - 当前页
 *          $myde_url - 获取当前的url
 * @功能:   分页实现
 * @作者:   宋海阁
 */
class page {
    private $myde_total;          //总记录数
    private $myde_size;           //一页显示的记录数
    private $myde_page;           //当前页
    private $myde_page_count;     //总页数
    private $myde_i;              //起头页数
    private $myde_en;             //结尾页数
    private $myde_url;            //获取当前的url
    /*
     * $show_pages
     * 页面显示的格式,显示链接的页数为2*$show_pages+1。
     * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页] 
     */
    private $show_pages;
    public function construct($myde_total = 1, $myde_size = 1, $myde_page = 1, $myde_url, $show_pages = 2) {
        $this->myde_total = $this->numeric($myde_total);
        $this->myde_size = $this->numeric($myde_size);
        $this->myde_page = $this->numeric($myde_page);
        $this->myde_page_count = ceil($this->myde_total / $this->myde_size);
        $this->myde_url = $myde_url;
        if ($this->myde_total < 0)
            $this->myde_total = 0;
        if ($this->myde_page < 1)
            $this->myde_page = 1;
        if ($this->myde_page_count < 1)
            $this->myde_page_count = 1;
        if ($this->myde_page > $this->myde_page_count)
            $this->myde_page = $this->myde_page_count;
        $this->limit = ($this->myde_page - 1) * $this->myde_size;
        $this->myde_i = $this->myde_page - $show_pages;
        $this->myde_en = $this->myde_page + $show_pages;
        if ($this->myde_i < 1) {
            $this->myde_en = $this->myde_en + (1 - $this->myde_i);
            $this->myde_i = 1;
        }
        if ($this->myde_en > $this->myde_page_count) {
            $this->myde_i = $this->myde_i - ($this->myde_en - $this->myde_page_count);
            $this->myde_en = $this->myde_page_count;
        }
        if ($this->myde_i < 1)
            $this->myde_i = 1;
    }
    //检测是否为数字
    private function numeric($num) {
        if (strlen($num)) {
            if (!preg_match("/^[0-9]+$/", $num)) {
                $num = 1;
            } else {
                $num = substr($num, 0, 11);
            }
        } else {
            $num = 1;
        }
        return $num;
    }
    //地址替换
    private function page_replace($page) {
        return str_replace("{page}", $page, $this->myde_url);
    }
    //首页
    private function myde_home() {
        if ($this->myde_page != 1) {
            return "<a href=&#39;" . $this->page_replace(1) . "&#39; title=&#39;首页&#39;>首页</a>";
        } else {
            return "<p>首页</p>";
        }
    }
    //上一页
    private function myde_prev() {
        if ($this->myde_page != 1) {
            return "<a href=&#39;" . $this->page_replace($this->myde_page - 1) . "&#39; title=&#39;上一页&#39;>上一页</a>";
        } else {
            return "<p>上一页</p>";
        }
    }
    //下一页
    private function myde_next() {
        if ($this->myde_page != $this->myde_page_count) {
            return "<a href=&#39;" . $this->page_replace($this->myde_page + 1) . "&#39; title=&#39;下一页&#39;>下一页</a>";
        } else {
            return"<p>下一页</p>";
        }
    }
    //尾页
    private function myde_last() {
        if ($this->myde_page != $this->myde_page_count) {
            return "<a href=&#39;" . $this->page_replace($this->myde_page_count) . "&#39; title=&#39;尾页&#39;>尾页</a>";
        } else {
            return "<p>尾页</p>";
        }
    }
    //输出
    public function myde_write($id = &#39;page&#39;) {
        $str = "<div id=" . $id . ">";
        $str.=$this->myde_home();
        $str.=$this->myde_prev();
        if ($this->myde_i > 1) {
            $str.="<p class=&#39;pageEllipsis&#39;>...</p>";
        }
        for ($i = $this->myde_i; $i <= $this->myde_en; $i++) {
            if ($i == $this->myde_page) {
                $str.="<a href=&#39;" . $this->page_replace($i) . "&#39; title=&#39;第" . $i . "页&#39; class=&#39;cur&#39;>$i</a>";
            } else {
                $str.="<a href=&#39;" . $this->page_replace($i) . "&#39; title=&#39;第" . $i . "页&#39;>$i</a>";
            }
        }
        if ($this->myde_en < $this->myde_page_count) {
            $str.="<p class=&#39;pageEllipsis&#39;>...</p>";
        }
        $str.=$this->myde_next();
        $str.=$this->myde_last();
        $str.="<p class=&#39;pageRemark&#39;>共<b>" . $this->myde_page_count .
                "</b>页<b>" . $this->myde_total . "</b>条数据</p>";
        $str.="</div>";
        return $str;
    }
}
?>

Rendering:

PHP 페이징 클래스 구현

요약:

PHP 페이징은 실제 개발에서 그렇게 많은 코드를 작성할 필요가 없습니다. 우리는 후속 개발에서 보편적으로 사용할 수 있는 PHP 페이징 클래스를 직접 작성할 수 있습니다. 그냥 가져가서 직접 호출하면 됩니다. 다시 작성할 필요가 없습니다!

관련 권장사항:

php


페이징 구현의 예


PHP 페이지 매김 코드 작성 방법


PHP를 사용하여 페이징 쿼리를 수행하는 방법

위 내용은 PHP 페이징 클래스 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.