PHP 简单实用的原生分页

2022-09-11 16:57:55 浏览数 (1)

php部分

代码语言:javascript复制
  <?php

class Pager
{
    protected $prefix_url;
    protected $page_total;
    protected $current_page;
    protected $max_page;
    protected $suffix;
    protected $html = '';
    protected $pageList = [];

    /**
     * Pager constructor.
     * @param string $prefix_url    url前缀
     * @param int $page_total       总页数
     * @param int $current_page     当前页
     * @param int $max_page         显示最大页面数
     * @param string $suffix        url后缀
     */
    public function __construct($prefix_url, $page_total, $current_page = 1, $max_page = 5, $suffix = '/')
    {
        $this->prefix_url = $prefix_url ?: '';
        $this->page_total = $page_total ?: 0;
        $this->current_page = $current_page ?: 1;
        $this->max_page = $max_page ?: 5;
        $this->suffix = $suffix ?: '/';
        $this->setHtml();
    }

    /**
     * 设置分页html
     */
    private function setHtml()
    {
        if ($this->page_total <= 0) {
            $this->html = '';
        } else {
            if ($this->current_page >= 1) {
                $pre_page = $this->current_page - 1;
                $this->html .= "<a class='normal' href='{$this->prefix_url}1{$this->suffix}' target='_self'>首页</a>";
                if ($this->current_page != 1) {
                    $this->html .= "<a class='normal' href='{$this->prefix_url}{$pre_page}{$this->suffix}' target='_self'>上一页</a>";
                }
                if ($this->current_page > $this->max_page && $this->current_page <= $this->page_total) {
                    $this->pageList = range($this->current_page - $this->max_page   1, $this->current_page);
                } elseif ($this->current_page <= $this->max_page) {
                    $this->pageList = range(1, $this->max_page);
                }
                if (empty($this->pageList)) {
                    $this->html = '';
                } else foreach ($this->pageList as $number) {
                    if ($number == $this->current_page) {
                        $this->html .= "<a class='normal selected' href='{$this->prefix_url}{$number}{$this->suffix}' target='_self'>{$number}</a>";
                    } else {
                        $this->html .= "<a class='normal' href='{$this->prefix_url}{$number}{$this->suffix}' target='_self'>{$number}</a>";
                    }
                }
                if ($this->current_page < $this->page_total) {
                    $next_page = $this->current_page   1;
                    $this->html .= "<a class='normal' href='{$this->prefix_url}{$next_page}{$this->suffix}' target='_self'>下一页</a>
    <a class='normal' href='{$this->prefix_url}{$this->page_total}{$this->suffix}' target='_self'>尾页</a>
    <a class='normal' pointer-events:'none' target='_self'>总页数({$this->page_total}})/当前页({$this->current_page})</a>
    ";
                } else {
                    $this->html .= "<a class='normal' href='{$this->prefix_url}1{$this->suffix}' target='_self'>返回首页</a>
    <a class='normal' pointer-events:'none' target='_self'>总页数({$this->page_total}})/当前页({$this->current_page})</a>
    ";
                }
            }

        }
    }

    /**
     * 获取url
     * @return string
     */
    public function toHtml()
    {
        return $this->html ?: '';
    }
}

$pager = new Pager('http://kkkk123.com/?page=', 100, trim($_GET['page'], '.html') ?: 1, 5, '.html');
$page = $pager->toHtml();
?>
前端
代码语言:javascript复制
<style>
    #page {
        clear: both;
        margin: 0px;
        height: auto;
        font-size: 15px;
        padding-top: 12px;
        padding-right: 10px;
        padding-left: 10px;
        padding-bottom: 36px;
        text-align: center;
    }

    #page a.selected {
        color: #fff;
        background-color: #ff6600;
        border: 1px solid #ff6600;

    }

    #page a {
        box-shadow: 0px 0px 4px #f7f7f7;
        display: inline-block;
        height: 28px;
        line-height: 28px;
        padding: 0 11px;
        margin: 0 3px;
        color: #666;
        background-color: #f6f6f6;
        vertical-align: middle;
        font-size: 15px;
        text-decoration: none;
        border: 1px solid #eeeeee;
    }

    #page a:hover {
        display: inline-block;
        height: 28px;
        line-height: 28px;
        padding: 0 11px;
        margin: 0 3px;
        color: #fff !important;
        background-color: #ff6600;

        vertical-align: middle;
        font-size: 15px;
        text-decoration: none;
    }
</style>
<div id="page" class="pager">
    <?= $page; ?>
</div>

0 人点赞