php怎么写分页?php实现的漂亮分页方法

分页页码显示算法.

  1. /**
  2. * 获取分页的HTML内容
  3. * @param integer $page 当前页
  4. * @param integer $pages 总页数
  5. * @param string $url 跳转url地址 最后的页数以 '&page=x' 追加在url后面
  6. *
  7. * @return string HTML内容;
  8. */
  9. public static function getPageHtml($page, $pages, $url){
  10. //最多显示多少个页码
  11. $_pageNum = 5;
  12. //当前页面小于1 则为1
  13. $page = $page<1?1:$page;
  14. //当前页大于总页数 则为总页数
  15. $page = $page > $pages ? $pages : $page;
  16. //页数小当前页 则为当前页
  17. $pages = $pages < $page ? $page : $pages;
  18. //计算开始页
  19. $_start = $page - floor($_pageNum/2);
  20. $_start = $_start<1 ? 1 : $_start;
  21. //计算结束页
  22. $_end = $page + floor($_pageNum/2);
  23. $_end = $_end>$pages? $pages : $_end;
  24. //当前显示的页码个数不够最大页码数,在进行左右调整
  25. $_curPageNum = $_end-$_start+1;
  26. //左调整
  27. if($_curPageNum<$_pageNum && $_start>1){
  28. $_start = $_start - ($_pageNum-$_curPageNum);
  29. $_start = $_start<1 ? 1 : $_start;
  30. $_curPageNum = $_end-$_start+1;
  31. }
  32. //右边调整
  33. if($_curPageNum<$_pageNum && $_end<$pages){
  34. $_end = $_end + ($_pageNum-$_curPageNum);
  35. $_end = $_end>$pages? $pages : $_end;
  36. }
  37. $_pageHtml = '<ul class="pagination">';
  38. /*if($_start == 1){
  39. $_pageHtml .= '<li><a title="第一页">&laquo;</a></li>';
  40. }else{
  41. $_pageHtml .= '<li><a title="第一页" href="'.$url.'&page=1">&laquo;</a></li>';
  42. }*/
  43. if($page>1){
  44. $_pageHtml .= '<li><a title="上一页" href="'.$url.'&page='.($page-1).'">&laquo;</a></li>';
  45. }
  46. for ($i = $_start; $i <= $_end; $i++) {
  47. if($i == $page){
  48. $_pageHtml .= '<li class="active"><a>'.$i.'</a></li>';
  49. }else{
  50. $_pageHtml .= '<li><a href="'.$url.'&page='.$i.'">'.$i.'</a></li>';
  51. }
  52. }
  53. /*if($_end == $pages){
  54. $_pageHtml .= '<li><a title="最后一页">&raquo;</a></li>';
  55. }else{
  56. $_pageHtml .= '<li><a title="最后一页" href="'.$url.'&page='.$pages.'">&raquo;</a></li>';
  57. }*/
  58. if($page<$_end){
  59. $_pageHtml .= '<li><a title="下一页" href="'.$url.'&page='.($page+1).'">&raquo;</a></li>';
  60. }
  61. $_pageHtml .= '</ul>';
  62. echo $_pageHtml;
  63. }