PHP realiza la función de paginación (2) Estilo de paginación de Baidu, número fijo de paginación

El siguiente método se desarrolla en base al marco THINKPHP5 para realizar la función de paginación del estilo de paginación de Baidu y fijar el número de paginación. El
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
estilo de paginación como se muestra en la siguiente figura fija el número de paginación. Por ejemplo, Baidu fija el número de páginas que se mostrarán a la vez. Mediante la comparación, se encuentra que cuando la página actual es mayor o igual a 6, el número de páginas finales es siempre cuatro más que la página actual hasta Después de mostrar el número total de páginas,
imitaremos la función de paginación de Baidu para lograr la función de paginación ajustable

El siguiente código de clasificación todavía se basa en mi PHP anterior para realizar la función de paginación (1) El código de la función de paginación básica de la página anterior / siguiente se modifica y desarrolla

Código del controlador (en comparación con la versión básica del controlador de búsqueda, dos parámetros más)

/*
 *分页功能
 * 参数:p 当前页码数
 *      listpage 每页显示的数据条数
 *      totalpage 总页数
 *      fenye 分页条数,例如百度的是10
 *      qiehuan 分页数字切换点,例如百度的是6
 * */
public function index(){
    
    
	$p=input('p',1,'intval');//当前页码数,默认显示第一页
	$listpage=input('listpage',8,'intval');//每页显示的数据条数
	$count=Db::name('shujubiao')->count();//数据总数
	$totalpage=ceil($count/$listpage);//总页数
	$fenye=input('listpage',10,'intval');//分页条数
    $qiehuan=input('listpage',6,'intval');//分页数字切换点
    /*
	* $p<=$qiehuan 
	* 当前页小于等于切换点的时候,分页第一个数字始终是1
	* 尾数:如果总页数$totalpage小于等于分页条数$fenye,尾数就是总页数$totalpage
	* 	    如果总页数$totalpage大于分页条数$fenye,尾数就是分页条数$fenye
	* 
	* $p>$qiehuan
	* 当前页大于切换点时,
	* 分页条数$fenye-切换点$qiehuan = 当前页数到尾数的分页个数
	* 尾数:当前页数+当前页数到尾数的分页个数,此时
	* 		如果尾数大于总页数$totalpage,那么尾数=总页数$totalpage,
	* 		如果尾数小于等于总页数$totalpage,那么尾数=当前页数+当前页数到尾数的分页个数
	*/
    if($p<=$qiehuan){
    
    
    	$start=0;/*开始页数,代表第一个数为1*/
        $end = $totalpage>=$fenye?$fenye:$totalpage;/*结束页数*/
    }else{
    
    
        $end = $p +($fenye-$qiehuan)>$totalpage?$totalpage:$p +($fenye-$qiehuan);
        $start = $end-$p<=$fenye-$qiehuan?$end-$fenye:$p -$qiehuan;
    }
	$product=Db::name('shujubiao')->page($p,$listpage)->select();
	
	$this->assign('product',$product);
	$this->assign('p',$p);
	$this->assign('totalpage',$totalpage);
	$this->assign('start',$start);
    $this->assign('end',$end);
	return $this->view->fetch('页面');
}

Código de front-end, estilo de autodepuración

<div class="page_box">
	<div class="p_b_c">
        <!--传递分页参数-->
         <input type="hidden" id="page" value="{$p}">
         <input type="hidden" id="totalpage" value="{$totalpage}">

         <div id="prev-page" class="pn_btn prev-page"></div>
         <ul>
             {for start="$start" end="$end"}
             <li onclick="huan({$i+1})">{$i+1}</li>
             {/for}
         </ul>
         <div id="next-page" class="pn_btn next-page"></div>
     </div>
 </div>

código js

//分页
//当前页跳转
function huan(page) {
    
    
    location.href = "/模块名/控制器名/方法名/p/" + page + '.html';
}
/*
 * 上一页功能
 * */
$(document).on('click', '#prev-page', function() {
    
    
    var page = $("#page").val(); //获取当前分页
    page--;
    if (page < 1) {
    
    
        page = 1;
        alert('已经是第一页了');
        return false;
    }
    location.href = "/模块名/控制器名/方法名/p/" + page + '.html';
});

/*
 * 下一页功能
 * */
$(document).on('click', '#next-page', function() {
    
    
    var page = $("#page").val(); //获取当前分页
    var totalpage = $("#totalpage").val();
    page++;
    if (page > totalpage) {
    
    
        page = totalpage;
        alert('已经是最后一页了');
        return false;
    }
    location.href = "/模块名/控制器名/方法名/p/" + page + '.html';
});

Lo anterior es para realizar la función de paginación del estilo de paginación de Baidu. Solo necesitamos ajustar el número de entradas de paginación en $ fenye, el punto de conmutación de los números de paginación de $ qiehuan, dos parámetros, para lograr el número de páginas mostradas por página y cuándo cambiar el número de inicio, lo cual es muy conveniente .

Supongo que te gusta

Origin blog.csdn.net/qq_36129701/article/details/108646277
Recomendado
Clasificación