Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cklee/pagecalc
calculate page numbers and cursors of paged results
https://github.com/cklee/pagecalc
page pagedlist pagination pagination-calculate paging
Last synced: 12 days ago
JSON representation
calculate page numbers and cursors of paged results
- Host: GitHub
- URL: https://github.com/cklee/pagecalc
- Owner: cKlee
- License: mit
- Created: 2018-10-08T14:56:42.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-08-27T13:59:46.000Z (over 5 years ago)
- Last Synced: 2024-11-10T03:38:58.709Z (2 months ago)
- Topics: page, pagedlist, pagination, pagination-calculate, paging
- Language: PHP
- Homepage: https://cklee.github.io/pagecalc/
- Size: 602 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/cKlee/pagecalc.svg?branch=master)](https://travis-ci.org/cKlee/pagecalc)
# PageCalc
It calculates the page number and cursor (first item number on the current page) vice versa.
It also calculates
- next cursor (first item number on the next page if applicable)
- previous cursor (first item number on the previous page if applicable)
- last cursor (first item number on the last page)
- next page number if applicable
- previous page number if applicable
- last page number
- total number of pages## Installation
Install with composer:
composer require "ck/pagecalc:@dev"
## Usage example
```php
require '../vendor/autoload.php';use CK\PageCalc;
$pc = new PageCalc(20) ; // Initiate with a default number of items on one page (limit)
// Someone makes a request on page 3 and a limit of 20 items on the page
$pc->gotoPage($_GET['page'], $_GET['limit']);// Now do your query using the cursor (offset)
doYourQuery($query = $_GET['q'], $offset = $pc->getCursor(), $limit = $_GET['limit']);/*
* With the results you have a total number of results (e.g. $total = 100)
*/echo 'There are '. $pc->getTotalPages($total) .' pages'; # There are 5 pages
echo 'Page '. $pc->getPage() . ' starts at ' .$pc->getCursor(); # Page 3 starts at 41
// make sure there is a next page
if($pc->getNextPage($total)) {
echo 'Next page is '. $pc->getNextPage($total) . ' and starts at ' . $pc->getNextCursor($total); # Next page is 4 and starts at 61
}// make sure there is a previous page
if($pc->getPreviousPage()) {
echo 'Previous page was '. $pc->getPreviousPage() . ' and started at ' . $pc->getPreviousCursor(); # Previous page was 2 and started at 21
}// there is always a last page (same as total number of pages)
echo $pc->getLastPage($total) .' is the last page and starts at '. $pc->getLastCursor($total); # 5 is the last page and starts at 81```
## Methods
### __construct($limit)
Sets the default limit. If limit is lower than one, default limit will be 1.
### moveCursor($cursor, $limit = false)
Moves cursor, calcultes page number and optionally sets a new limit
Since cursor is always the first item number on the current page, cursor must be a multitude of the limit plus 1. If cursor number is not correct method moveCursor will correct this. E.g.:
```php
$pc = new PageCalc(3); // limit 3
$pc->moveCursor(5); // cursor can't be 5
echo $pc->getCursor(); // current cursor is now 4.
//4 is the first item number on page 2, wich contains item number 5
```### gotoPage($page, $limit = false)
Sets the current page number, calculates cursor number and optionally sets a new limit
### getCursor()
Gets the number of the first item on the current page
### getNextCursor($total)
$total is the total number of items.
Gets the number of the first item on the next page. Returns false if there is no next page.
### getPreviousCursor()
Gets the number of the first item on the previous page. Returns false if there is no previous page.
### getLastCursor($total)
$total is the total number of items.
Gets the number of the first item on the last page.
### getPage()
Gets the number of the current page
### getNextPage($total)
$total is the total number of items.
Gets the number of the next page. Returns false if there is no next page.
### getPreviousPage()
Gets the number of the previous page. Returns false if there is no previous page.
### getLastPage($total)
$total is the total number of items.
Gets the number of last page.
### getTotalPages($total)
$total is the total number of items.
Gets the total number of pages.
### getNumberOfItems($total)
$total is the total number of items.
Get number of items on current page.