>  기사  >  백엔드 개발  >  smarty와 함께 PHP 페이징 코드를 사용하는 예

smarty와 함께 PHP 페이징 코드를 사용하는 예

WBOY
WBOY원래의
2016-07-25 08:52:382180검색
  1. /**
  2. * 페이지네이션 클래스
  3. */
  4. class Pager {
  5. var $total; 🎜> var $pageSize; //각 페이지에 표시되는 레코드 수
  6. var $currentPage; //현재 페이지 번호
  7. var $offset; //레코드 오프셋
  8. //총 페이지 수 페이지
  9. var $numberOffset = 5; // 페이지 번호 오프셋
  10. var $request = ""; // 페이지 요청 매개변수
  11. //============= = =
  12. //Fn: 호출기
  13. //함수: 생성자
  14. //=================
  15. 공용 함수 __construct ($total, $pageSize, $currentPage, $request = "") {
  16. $this->total = $total;
  17. $this->pageSize = $pageSize;
  18. $this->pageOffset() ;
  19. $this->pageTotal();
  20. $this->currentPage($currentPage);
  21. $this->request = $request;
  22. }
  23. //= ================
  24. //Fn: pageOffset
  25. //기능: 데이터베이스 레코드 오프셋
  26. //========= == ======
  27. 공용 함수 pageOffset() {
  28. return $this->offset = $this->pageSize * ($this->currentPage - 1);
  29. }
  30. //=================
  31. //Fn: pageTotal
  32. //기능: 총 페이지 수 계산
  33. //= ================
  34. 공개 함수 pageTotal() {
  35. return $this->pageTotal = ceil($this->total / $this-> pageSize);
  36. }
  37. //==================
  38. //Fn: 현재 페이지
  39. //기능: 숫자 설정 페이지 수
  40. //=================
  41. public function currentPage($currentPage) {
  42. if (isset($currentPage)) {
  43. $this ->currentPage = intval($currentPage);
  44. } else {
  45. $this->currentPage = 1;
  46. }
  47. return $this->currentPage;
  48. }
  49. //=================
  50. //Fn: nextPage
  51. //기능: 다음 페이지로 이동
  52. //=== = =============
  53. public function nextPage() {
  54. // 레코드 수 표시
  55. $link = "총 {$this->total} 레코드  ;" ;
  56. // 페이지 번호 단계
  57. $stepPage = $this->currentPage ? ceil($this->currentPage / $this->numberOffset) : 1;
  58. //숫자 페이지 설정
  59. $numberPage = ($this->pageTotal > $this->numberOffset) ? $this->numberOffset : $this->pageTotal;
  60. / / 한 페이지만
  61. if ($this->total pageSize) {
  62. $link .= "[Home]|[마지막 페이지]";
  63. } else {
  64. // 전체 페이지 수와 현재 페이지 설정
  65. $link .= "페이지 {$this->currentPage}/{$this->pageTotal} ";
  66. / /Home
  67. $link .= "request}>[Home] ";
  68. // 다음 열
  69. if ($stepPage > 1) {
  70. $lastIndex = ($stepPage - 1) * $this->numberOffset;
  71. $link .= "< ;a 제목 ='이전 열' href=?pageNo={$lastIndex}{$this->request}>[";
  72. }
  73. // 이전 한 페이지
  74. if ($this->currentPage > 1) {
  75. $prePage = $this->currentPage - 1;
  76. $link .="request}>[";
  77. }
  78. // 숫자 페이지 번호
  79. $i = ($stepPage - 1) * $this->numberOffset;
  80. for ($j = $i; $j pageTotal ; $j ) {
  81. $newPage = $j 1;
  82. if ($this->currentPage == $j 1) {
  83. $link .= "[" . ($ j 1) . "]";
  84. } else {
  85. $link .= "요청} >[ " . ($j 1) . "]";
  86. }
  87. }
  88. //다음 페이지
  89. if ($this->currentPage $nextPage = $this->currentPage 1;
  90. $link .= " request }>[>]";
  91. }
  92. // 다음 열
  93. if ($stepPage total) {
  94. $ nextPage = $stepPage * ($this->numberOffset 1);
  95. if ($nextPage pageTotal) {
  96. $link .= "request}>[>>]";
  97. }
  98. }
  99. // 마지막 페이지
  100. if ($ this ->currentPage pageTotal) {
  101. $link .= "..pageTotal}{$this-> ; 요청}>[마지막 페이지]";
  102. }
  103. }
  104. return $link;
  105. }
  106. }
  107. ?>
코드 복사

2. PHP 페이징 클래스 호출 예:

1. URL에서 반환된 페이지 수를 가져옵니다.

  1. $cur_page = 1;
  2. if (isset($_GET["pageNo"])) {
  3. $cur_page = $_GET[" pageNo"];
  4. }
코드를 복사

2하여 페이징 개체를 만듭니다.

  1. $nums: 특정 데이터의 전체 개수
  2. $page_size: 각 페이지에 표시되는 개수
  3. $cur_page: 현재 페이지 번호
  4. $request: 기타 URL 요청 선택적 매개변수
  5. $pager = new Pager($nums, $page_size, $cur_page, $request);
코드 복사

3, 스마트한 과제:

  1. $show = 표시할 데이터 가져오기
  2. $this->tpl->ass('numlink', $pager-> nextPage ()); // 페이지가 매겨진 목록 가져오기
  3. $this->tpl->sign('data',$show);
코드 복사

페이징 효과: smarty와 함께 PHP 페이징 코드를 사용하는 예

위 페이징 코드는 주소 표시줄에 전달된 모든 정보를 노출하는 URL 리디렉션을 구현하지 않습니다.



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.