热搜:NVER node 开发 php

分页控件代码逻辑(JS版本&PHP版本)

2024-08-15 13:00:01
分页控件代码逻辑(JS版本&PHP版本)

JS版本:

    //total_page:总页数    //boundary:页数临界值    //front_range:前段显示页码数    //mid_range:中段显示页码数    //rear_range后段显示页码数    //page_size:每页记录数    var pagination_config = {total_page : 10,current_page:1, boundary : 7, front_range : 1, mid_range : 5,rear_range : 1,page_size:10};    /**     * 分?格式?理,ex. prev 1 ... 8 9 10 11 12 ... 20 next     * @return array 要?示的??     */    function pagintion_array()    {                var total_page = pagination_config.total_page,                    boundary = pagination_config.boundary,                     front_range =  pagination_config.front_range,                     mid_range = pagination_config.mid_range,                    rear_range = pagination_config.rear_range,                    current_page = pagination_config.current_page;        var pagintion = [];        current_page = (current_page > total_page) ? total_page : current_page;        // ???小於???界值,??示所有??        if (total_page <= boundary) {            for (i = 1; i <= total_page; i++) {                pagintion.push(i);            }        } else {            var front_end     = front_range; // 前段最後一???            var mid_start     = current_page - Math.ceil(parseFloat(mid_range - 1) / 2); // 中段第一???            var mid_end     = current_page + ((mid_range - 1) - Math.ceil((mid_range - 1) / 2)); // 中段最後一???            var rear_start     = total_page - rear_range + 1; // 後段第一???            // 中段第一???小於等於1,中???往左位移            while (mid_start <= 1) {                if (mid_start < 1)                    mid_end += 1;                mid_start += 1;            }            // 中段第一???大於等於???,中???往右位移            while (mid_end >= total_page) {                if (mid_end > total_page)                    mid_start -= 1;                mid_end -= 1;            }            // 取出需要?示的???            for (var i = 1; i <= total_page; i++) {                if (i <= front_end || (i >= mid_start && i <= mid_end) || i >= rear_start) {                    if (i - pagintion[pagintion.length-1] > 1) {                        pagintion.push('...');                    }                    pagintion.push(i);                }            }        }        return pagintion;    }    /**     * 拼装分页的 html  ;     * 样式 for jquery.simplepagination      * @return string     */    function create_html()    {                var current_page = pagination_config.current_page,                    total_page = pagination_config.total_page;                if(total_page<=1){                    return;                }        var html = '
    '; //计算总页数; //计算分页 var pagintion = pagintion_array(); //上一页 //上一页 不可点击 if (current_page <= 1) { html+='
  • 上一页
  • '; } else { //上一页可点击 var page_prev = current_page - 1; html+='
  • 上一页
  • '; } //每一页的 链接 for(var i=0;i'+page_id+''; } else if (page_id == '...') { html+='
  • ...
  • '; } else { html+='
  • '+page_id+'
  • '; } } //下一页 //下一页 不可点击 if (current_page >= total_page) { html+='
  • 下一页
  • '; } else { //下一页 可点击 var page_next = current_page + 1; html+='
  • 下一页
  • '; } html+='
  • 到第
  • '; html+='
  • '; html+='
  • '; html+='
  • '; html+='
'; $('.pagintion').children().remove(); $('.pagintion').append(html); $(".pagintion").find('[data-page-index]').on("click",function(){ if($(this).data('page-index')!=pagination_config.current_page){ pagination_config.current_page = $(this).data('page-index'); //绑定列表 get_comment_list(); } }) } }

PHP版本:

<?php/** * 分页类 * @auth  * @date 2014-10-24 */class Pagination_lib{    /**     * 参数设定      * @param int $current_page ?前??     * @param int $total_page ???     * @param int $boundary ???界值     * @param int $front_range 前段?示???     * @param int $mid_range 中段?示???     * @param int $rear_range 後段?示???     */    public $current_page = 1;    public $total_page     = 10;    public $boundary     = 7;    public $front_range     = 1;    public $mid_range     = 5;    public $rear_range     = 1;    //每个页的链接 如: domain/list#page=    public $page_url = '#page=';    /**     * 初始化设置 分页类      * @param type $config     */    function init($config = array())    {        if (count($config) > 0) {            foreach ($config as $key => $val) {                if (isset($this->$key)) {                    $this->$key = $val;                }            }        }    }    /**     * 分?格式?理,ex. prev 1 ... 8 9 10 11 12 ... 20 next     *  copy from Store_lib.pagintion  , 从Store_lib中复制过来     * @param int $current_page ?前??     * @param int $total_page ???     * @param int $boundary ???界值     * @param int $front_range 前段?示???     * @param int $mid_range 中段?示???     * @param int $rear_range 後段?示???     * @return array 要?示的??     */    public function pagintion_array($current_page = 1, $total_page = 10, $boundary = 7, $front_range = 1, $mid_range = 5,                                 $rear_range = 1)    {        $pagintion = array();        $current_page = ($current_page > $total_page) ? $total_page : $current_page;        // ???小於???界值,??示所有??        if ($total_page <= $boundary) {            for ($i = 1; $i <= $total_page; $i++) {                $pagintion[] = $i;            }        } else {            $front_end     = $front_range; // 前段最後一???            $mid_start     = $current_page - ceil(($mid_range - 1) / 2); // 中段第一???            $mid_end     = $current_page + (($mid_range - 1) - ceil(($mid_range - 1) / 2)); // 中段最後一???            $rear_start     = $total_page - $rear_range + 1; // 後段第一???            // 中段第一???小於等於1,中???往左位移            while ($mid_start <= 1) {                if ($mid_start < 1)                    $mid_end += 1;                $mid_start += 1;            }            // 中段第一???大於等於???,中???往右位移            while ($mid_end >= $total_page) {                if ($mid_end > $total_page)                    $mid_start -= 1;                $mid_end -= 1;            }            // 取出需要?示的???            for ($i = 1; $i <= $total_page; $i++) {                if ($i <= $front_end || ($i >= $mid_start && $i <= $mid_end) || $i >= $rear_start) {                    if ($i - (int) end($pagintion) > 1) {                        $pagintion[] = '...';                    }                    $pagintion[] = $i;                }            }        }        return $pagintion;    }    /**     * 拼装分页的 html  ;     * 样式 for jquery.simplepagination      * @return string     */    function create_html()    {        $html = '
    '; //计算总页数; //计算分页 $pagintion = $this->pagintion_array($this->current_page, $this->total_page, $this->boundary, $this->front_range, $this->mid_range, $this->rear_range); //上一页 //上一页 不可点击 if ($this->current_page <= 1) { $html.='
  • 上一页
  • '; } else { //上一页可点击 $page_prev = $this->current_page - 1; $html.='
  • page_url . $page_prev . '" class="page-link prev" url="' . $this->page_url . $page_prev . '" page="' . $page_prev . '" style="color: rgb(102, 102, 102); position: relative; background: rgb(255, 255, 255);">上一页
  • '; } //每一页的 链接 foreach ($pagintion as $page_id) { if ($page_id == $this->current_page) { $html.='
  • ' . $page_id . '
  • '; } elseif ($page_id == '...') { $html.='
  • '; } else { $html.='
  • page_url . $page_id . '" class="page-link" page="' . $page_id . '">' . $page_id . '
  • '; } } //下一页 //下一页 不可点击 if ($this->current_page >= $this->total_page) { $html.='
  • 下一页
  • '; } else { //下一页 可点击 $page_next = $this->current_page + 1; $html.='
  • page_url . $page_next . '" class="page-link next" url="' . $this->page_url . $page_next . '" page="' . $page_next . '" style="color: rgb(102, 102, 102); position: relative; width: 57px; background: rgb(255, 255, 255);">下一页
  • '; } $html.='
'; return $html; }}

 预览效果: