Xin chào mọi người, e là Tuấn. Với lượng kiến thức ít ỏi của mình, em xin mạn phép chia sẻ về một vấn đề không quá xa lạ, có thể nói là dễ đối với các anh, chị, các bạn - tạo phân trang cho các trang sản phẩm.
Phân trang là việc hiển thị dữ liệu trên nhiều trang thay vì đặt tất cả chúng lên một trang duy nhất, là kỹ thuật dùng để tạo kết nối giữa nhiều trang tương tự nhau, về mặt nội dung và hình thức, đáp ứng được hướng phát triển tối ưu người dùng trên website, giúp cho người dùng tìm được các thông tin họ mong muốn một cách nhanh hơn. Việc chia nhỏ thông tin bằng phân trang cũng giúp hạn chế sự quá tải thông tin trên cũng một site.
Đầu tiên, chúng ta phải lấy được trang hiện tại và số sản phẩm sẽ xuất hiện ở 1 trang (ở đây e sẽ ví dụ là mỗi trang có 30 sản phẩm)
Tiếp theo, mình sẽ dùng câu lệnh sql LIMIT và OFFSET để lấy ra được các trường đúng với yêu cầu(ở đây sẽ là lấy ra các link ảnh của 30 sản phẩm từ vị trí $start_from)
$sql = "SELECT id, image_url, thumbnail_url FROM shaun_stamp LIMIT " . $start_from.' , '.$per_page_record;
Thực thi câu lệnh sql trên mình đặt tên biến là $all_images.
Tiếp theo, mình sẽ lấy tổng số sản phẩm bằng cách đếm số phần tử của trường 'id' với câu lệnh sql sau đây
$sql = "SELECT count(id) FROM shaun_stamp";
Tiếp tục thực thi câu lệnh sql trên mình đặt tên biến là $all_rows.
Mình sẽ tìm tổng số trang như sau:
$total_pages = ceil($all_rows / $per_page_record);
Sau đó, mình sẽ đổ dữ liệu ra (30 ảnh):
E sẽ đặt một biến để in ra pagination là $pagLink = '';
Cuối cùng sẽ là phần hiển thị pagination nó sẽ có dạng như sau:
Nên e sẽ chia thành 3 trường hợp hiển thị của pagination:
+ Trường hợp 1: Khi người dùng đang ở trang đầu tiên hoặc trang thứ hai.
Là khi pagination sẽ không có dấu '...' trước số 1.
+ Trường hợp 2: Khi người dùng đang ở trang cuối cùng và ngay trước trang cuối cùng.
Là khi pagination sẽ không có dấu '...' ở sau trang cuối cùng.
+ Trường hợp 3: Khi người dùng ở những trang còn lại.
Sau đó sẽ in pagination ra ạ: echo $pagLink;
Dạ trên đây là cách em tạo pagination theo ý hiểu của em ạ, và cũng là lần đầu e viết bài trên forum nên có thể còn phần nào chưa chỉn chu hay tối ưu về mặt câu văn hoặc nội dung code thì rất mong các anh, chị và các bạn có thể đưa cho em lời khuyên ạ.
Lời cuối e xin cảm ơn mọi người đã dành ra vài phút cuộc đời để đọc bài viết này của em, em xin chân thành cảm ơn <3