zl程序教程

您现在的位置是:首页 >  后端

当前栏目

php页码形式分页函数支持静态化地址及ajax分页

PHP静态地址AJAX 函数 支持 分页 形式
2023-06-13 09:15:24 时间
之前每次遇到分页,总是得自己写,觉得挺繁琐的,所以本着通用的原则,写了一个分页的方法,特此记录。

目前此分页支持静态化地址分页和无链接地址时的ajax分页(但是js得自己写):

支持的静态地址如下:www.example.com/xxx-xxx-p1-xxxx-xx.html

其他形式静态化需根据自己情况进行改写

支持ajax方式分页时,$link参数为空,但提供了pid和optype,其中pid用于获取该页码页数,optype用于一个页面存在多个分页时区分当前触发动作属于哪个分页逻辑
复制代码代码如下:

/**********************************************************
*
*获取页码
*
**********************************************************
*
*@paramsstring$link链接地址(链接为空时可以用ajax翻页)
*
*@paramsint$intPage当前页数
*
*@paramsint$intTotal总页数
*
*@paramsint$intSize要显示的页数个数
*
*@paramsstring$type链接种类(多个翻页用于区分翻页区域)
*
**********************************************************
*
*@returnarray
*/
privatefunctionformatPage($link="",$intPage,$intTotal,$intSize=3,$type="")
{
$strPage="<divclass="g_serpageclearfix">";
if($intTotal>0)
{
if($intPage>1)
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".($intPage-1),$link).""><<上一页</a>":"<aoptype="".$type.""pid="showpage_".($intPage-1).""href="javascript:void(0)"><<上一页</a>";
else
$strPage.="<ahref="javascript:void(0)"><<上一页</a>";
//窗口宽度大于等于总页数
if(($intSize+2)>=$intTotal)
{
for($i=1;$i<=$intTotal;$i++)
{
$strClass=$i==$intPage?"class="g_serpagcur"":"";
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".$i,$link).""".$strClass.">".$i."</a>":"<aoptype="".$type.""pid="showpage_".$i.""href="javascript:void(0)"".$strClass.">".$i."</a>";
}
}
else
{
if($intPage<ceil($intSize/2))
{
for($i=1;$i<=$intSize;$i++)
{
$strClass=$i==$intPage?"class="g_serpagcur"":"";
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".$i,$link).""".$strClass.">".$i."</a>":"<aoptype="".$type.""pid="showpage_".$i.""href="javascript:void(0)"".$strClass.">".$i."</a>";
}
$strPage.=$link!=""?"<aclass="gpage_nobor">…</a><ahref="".preg_replace("/-p(\d+)/","p".$intTotal,$link)."">".$intTotal."</a>":"<aclass="gpage_nobor">…</a><aoptype="".$type.""pid="showpage_".$intTotal.""href="javascript:void(0)">".$intTotal."</a>";
}
elseif(($intTotal-$intPage)<ceil($intSize/2))
{
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p1",$link)."">1</a><aclass="gpage_nobor">…</a>":"<aoptype="".$type.""pid="showpage_1"href="javascript:void(0)">1</a><aclass="gpage_nobor">…</a>";
for($i=($intTotal+1-$intSize);$i++;$i<=$intTotal)
{
$strClass=$i==$intPage?"class="g_serpagcur"":"";
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".$i,$link).""".$strClass.">".$i."</a>":"<aoptype="".$type.""pid="showpage_".$i.""href="javascript:void(0)"".$strClass.">".$i."</a>";
}
}
else
{
$intOffset=floor($intSize/2);
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p1",$link)."">1</a>":"<aoptype="".$type.""pid="showpage_1"href="javascript:void(0)">1</a>";
if(($intPage-$intOffset)>2)
{
$strPage.="<aclass="gpage_nobor">…</a>";
}
for($i=(($intPage-$intOffset)<=1?2:($intPage-$intOffset));$i<=(($intPage+$intOffset)>=$intTotal?($intTotal-1):($intPage+$intOffset));$i++)
{
$strClass=$i==$intPage?"class="g_serpagcur"":"";
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".$i,$link).""".$strClass.">".$i."</a>":"<aoptype="".$type.""pid="showpage_".$i.""href="javascript:void(0)"".$strClass.">".$i."</a>";
}
if(($intPage-$intOffset)<($intTotal-1))
{
$strPage.="<aclass="gpage_nobor">…</a>";
}
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".$intTotal,$link)."">".$intTotal."</a>":"<aoptype="".$type.""pid="showpage_".$intTotal.""href="javascript:void(0)">".$intTotal."</a>";
}
}
if($intPage<$intTotal)
{
$strPage.=$link!=""?"<ahref="".preg_replace("/-p(\d+)/","p".($intPage+1),$link)."">下一页>></a>":"<aoptype="".$type.""pid="showpage_".($intPage+1).""href="javascript:void(0)">下一页>></a>";
}
else
{
$strPage.="<ahref="javascript:void(0)">下一页>></a>";
}
}
$strPage.="</div>";
return$strPage;
}