Tạo lớp phân trang đơn giản với php

Nếu nlỗi các bạn đã từng sử dụng những framework thì chắc rằng các bạn đã và đang biết mỗi framework đều có một tờ pagination (phân trang) của riêng rẽ nó. Và từ bây giờ bản thân đang lí giải gần như tín đồ tạo một lớp phân trang dễ dàng và đơn giản nhằm những chúng ta có thể thực hiện vào trong dự án của bản thân.

Bạn đang xem: Tạo lớp phân trang đơn giản với php

1, Thuật toán.

Nhìn tầm thường thì thuật tân oán phân trang của bọn chúng tacũng hết sức đơn giản dễ dàng nlỗi sau:

trước hết bọn họ bắt buộc khẳng định xem gồm tổng số từng nào phiên bản ghi đề nghị phân trang (total).Tiếp đó họ hy vọng bao nhiêu bạn dạng ghi trên một trang (limit).Sau Lúc dành được 2 thông số kỹ thuật trên thì chúng ta đã rất cần được xác minh được con số trang sẽ tiến hành chia ra sẽ tiến hành tính bằng: total/limit,nhưng lại lúc này nó đang mãi sau một vài lỗi nếu nhỏng phnghiền tân oán bên trên là lẻ (chẳng hạn như 152/5) đề xuất chúng ta đang mang đến nó làm cho tròn lên bởi hàm ceil() trong PHP..Khi mong mỏi xuất ra số trang thì chúng ta sẽ dùng vòng lặp hiển thị ra những trang với link của nó.

Về phần triết lý là như vậy, giờ họ đã thuộc lấn sân vào xuất bản code.

Xem thêm: Hướng Dẫn Cách Làm Sổ Quỹ Tiền Mặt Bằng Excel Bằng Mẫu Sổ Có Công Thức

2, Xây dựng lớp.

-Và đấy là lớp cơ mà bọn họ sẽ xây dựng được. Trong lớp này bản thân gồm bình luận một vài đoạn, còn một vài đoạn mình sẽ không giải thích cơ mà mình đang để cho chúng ta tự ôn lại bài bác cũ luôn luôn.

0, // tổng số mẩu tin "limit" => 0, // số mẩu tin lên trên một trang "full" => true, // true ví như hiện full số page, flase nếu như không hy vọng hiện nay false "querystring" => "page" // GET id dìm page >; /** * khởi sản xuất * *
param array $config */ public function __construct($config = <>) // soát sổ coi vào config tất cả limit, total đủ điều kiện không if (isset($config<"limit">) &và $config<"limit"> config = $config; /** * Lấy ra tổng cộng trang * *
return int */ private function gettotalPage() return ceil($this->config<"total"> / $this->config<"limit">); /** * Lấy ra trang bây giờ * *
return int */ private function getCurrentPage() // bình chọn tồn tại GET querystring và tất cả >=1 không if (isset($_GET<$this->config<"querystring">>) && (int)$_GET<$this->config<"querystring">> >= 1) // Nếu tất cả chất vấn tiếp xem nó bao gồm lớn hơn tổn định số trang không. if ((int)$_GET<$this->config<"querystring">> > $this->gettotalPage()) // giả dụ to hơn thì trả về tổng số page return (int)$this->gettotalPage(); else // còn ko thì trả về số trang return (int)$_GET<$this->config<"querystring">>; else // nếu không tồn tại querystring thì nhấn mặc định là 1 trong return 1; /** * mang ra trang vùng trước * *
return string */ private function getPrePage() // nếu như trang hiện nay bằng 1 thì trả về null if ($this->getCurrentPage() === 1) return; else // còn không thì trả về html code return ""; /** * Lấy ra trang phía sau * *
return string */ private function getNextPage() // ví như trang hiện tại lơn rộng = totalpage thì trả về rỗng if ($this->getCurrentPage() >= $this->gettotalPage()) return; else // còn không thì trả về HTML code return ""; /** * Hiển thị html code của page * *
return string */ public function getPagination() // tạo ra trở thành data trống rỗng $data = ""; // đánh giá xem người tiêu dùng gồm đề xuất full page không. if (isset($this->config<"full">) && $this->config<"full"> === false) // còn nếu không thì $data .= ($this->getCurrentPage() - 3) > 1 ? "..." : ""; for ($i = ($this->getCurrentPage() - 3) > 0 ? ($this->getCurrentPage() - 3) : 1; $i getCurrentPage() + 3) > $this->gettotalPage() ? $this->gettotalPage() : ($this->getCurrentPage() + 3)); $i++) if ($i === $this->getCurrentPage()) $data .= ""; else $data .= ""; $data .= ($this->getCurrentPage() + 3) gettotalPage() ? "..." : ""; else // trường hợp bao gồm thì for ($i = 1; $i gettotalPage(); $i++) if ($i === $this->getCurrentPage()) $data .= ""; else $data .= ""; return "" . $this->getPrePage() . $data . $this->getNextPage() . ""; }

3, Hướng dẫn áp dụng.

-Để thực hiện đượclớp trên thì các bạn chỉ cần khởi sinh sản cùng với những thông số nhỏng sau:

//Khởi sinh sản class$config = < "total" => 150, "limit" => 5, "full" => false, //bỏ qua mất nếu không ao ước hiển thị full page "querystring" => "trang" //bỏ qua mất giả dụ GET của khách hàng là page >;$page = new Pagination($config);//hiển thị codeemang lại $page->getPagination();VD: Mình sẽ cấu hình lớp với 160 bạn dạng ghi với mỗi trang đã hiển thị 7 phiên bản ghi. đồng thời đang hiển thị full page với CSS lạimang lại rất đẹp xíu.

page 167, "limit" => 7, "full" => true, "querystring" => "trang" >; $page = new Pagination($config); eđến $page->getPagination(); ?>