今天整理下PHP后台分页封装:
其大致的原理,就是通过$_REQUEST[‘page’]获取当前的页码数,来渲染要生成的页码列表,每次点击新的页码就会重新渲染
封装这个函数需要哪些参数:
(1) 当前要渲染的页码值
(2) 总的页码数
(3) 其他search条件 “&cid=2&pid=6 …”
function showPage($page, $totalPages, $where = null) { $url = $_SERVER['PHP_SELF']; $sep = ' '; $where = $where == null ? null : '&'.$where; $p = ""; //拼凑分页链接 $indexLinkStr = ($page == 1) ? "首页" : "<a href="{$url}?page=1{$where}">首页</a>"; $lastLinkStr = ($page == $totalPages) ? "尾页" : "<a href="{$url}?page={$totalPages}{$where}">尾页</a>"; $prevLinkStr = ($page == 1) ? "上一页" : "<a href="{$url}?page='.($page-1).'{$where}">上一页</a>"; $nextLinkStr = ($page == $totalPages) ? "下一页" : "<a href="{$url}?page='.($page+1).'{$where}">下一页</a>"; $cTotalStr = "总共{$totalPages}页,当前{$page}页"; //分页链接 for($i = 1;$i<=$totalPages;$i++) { if($page == $i) { $p .= "[{$i}]"; } else { $p .= "<a href="{$url}?page={$i}{$where}">[{$i}]</a>"; } } echo $cTotalStr.'<br/>'.$indexLinkStr.$sep.$prevLinkStr.$sep.$p.$sep.$nextLinkStr.$sep.$lastLinkStr; }
在某个页面加载数据列表的时候,调用分页:
条件:
(1)每页要显示的记录数
(2)总共的记录数
(3)如果每页要显示的记录数 >总共的记录数 = 才显示分页,也就是调用分页函数
获取$page等参数的判断条件:
if(@!!$_REQUEST['page']){ $page = (int)$_REQUEST['page']; }else{ $page = 1; }
//页码判断 防止在浏览器地址栏更改不正确的页码
if($page < 1 || $page == null || !is_numeric($page)){ $page = 1; }
//判断尾页 防止地址栏输入的值大于总页数
if($page > $totalPages){ $page = $totalPages; }
总的分页调用封装:
//管理员分页封装 function getAdminPage($pageSize = 2) { $link = connect(); $sql = "select * from imooc_admin"; $totalRows = getResultNum($link,$sql); //获取总记录数 //地址首页页码判断 if(@!!$_REQUEST['page']){ $page = (int)$_REQUEST['page']; }else{ $page = 1; } //页码判断 防止在浏览器地址栏更改不正确的页码 if($page < 1 || $page == null || !is_numeric($page)){ $page = 1; } //获取页码总数和页码的偏移量 好进行数据库limit查询 //每页多少条$pageSize $totalPages = ceil($totalRows/$pageSize); //页码数 $offset = ($page - 1)*$pageSize; //记录数偏移量 //获取当前页码对应的页面 $termWhere = "limit {$offset} , {$pageSize}"; //判断尾页 防止地址栏输入的值大于总页数 if($page > $totalPages){ $page = $totalPages; } $rowsData = listAdminData($termWhere); if(!$rowsData) { alertMes('当前没有用户信息,请先添加!','addAdmin.php'); } $arr = array(); $arr['rowsData'] = $rowsData; $arr['page'] = $page; $arr['totalPages'] = $totalPages; $arr['totalRows'] = $totalRows; return $arr; }
列表页面接收:
$pageSize = 3; $array = getAdminPage($pageSize); $rowsData = $array['rowsData']; $page = $array['page']; $totalPages = $array['totalPages']; $totalRows = $array['totalRows'];
帅有个屁用!到头来还不是被卒吃掉!