PHP code example of voodoophp / paginator

1. Go to this page and download the library: Download voodoophp/paginator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

voodoophp / paginator example snippets


	
	/ Pretending the the request url is: 
	// http://mysite.com.com/hip-hop/page/5
	
	// to catch the page number pattern in the request url
	$pagePattern = "/page/(:num)"; 

	// Some pre-calculated number
	$totalItems = 150; 

	// Total items to show per page
	$totalPerPage = 10; 
	
	$paginator = (new Voodoo\Paginator($pagePattern))
	                ->setItems($totalItems, $totalPerPage);
	

	
	$paginator = new Voodoo\Paginator;
	

---
####Voodoo\Paginator::setUrl()
To set the url and the  page number pattern

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern);


##### Alternative with the URL being set automatically

Paginator will set the URL automatically based on the request URI if setUrl() is not called. All the paginations will be based on the current url. 

In the example below, the __construct() accepts the pagePattern and  create the pagination url from the getUri();

	
	
	$pagePattern = "/page/(:num)";

	$paginator = (new Voodoo\Paginator($pagePattern));
	
---
	                
####Voodoo\Paginator::setItems()
To set the items, total items per page, and the pagination navigation size

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage);
	 
---

####Voodoo\Paginator::setPage()

By default, Paginator will catch the page number from the URL, but if you want to set the current page manually, setPage let you do so

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPage(4);
	                
---	

####Voodoo\Paginator::setPrevNextTitle()

To set the Prev and Next title when the pagination is long.
By default it is set to **Prev** and **Next**

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPage(4)
	                ->setPrevNextTitle("Prev",	"Next");
	 
---

####Voodoo\Paginator::setFirstLastTitle()

To set the First and Last title when the pagination is long.
By default it is set to **First** and **Last**

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPage(4)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
---
	                
####Array Voodoo\Paginator::toArray()

Will return the pagination data as an array which be used to create the pagination.

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPage(4)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 $pagination = $paginator->toArray();


toArray() will return an array similar to this:


	[
		[
			"page_number" => 1,
			"label" => "First",
			"url" => "http://mysite.com/pop/page/1",
			"is_current" => false,
			"is_first" => true,                
		],
		[
			"page_number" => 1,
			"label" => "Prev",
			"url" => "http://mysite.com/pop/page/1",
			"is_current" => false,
			"is_prev" => true,                   
		],	
		[
			"page_number" => 1,
			"label" => 1,
			"url" => "http://mysite.com/pop/page/1",
			"is_current" => true                   
		],
		[
			"page_number" => 2,
			"label" => 2,
			"url" => "http://mysite.com/pop/page/2",
			"is_current" => false                   
		],
		...
		[
			"page_number" => "10",
			"label" => "Next",
			"url" => "http://mysite.com/pop/page/10",
			"is_current" => false,
			"is_next" => true,                     
		],	
		[
			"page_number" => 15,
			"label" => "Last",
			"url" => "http://mysite.com/pop/page/15",
			"is_current" => false,
			"is_last" => true,                  
		]	
	]
	
### Manually create the pagination with toArray()

	<ul>
		 foreach($paginator->toArray() as $page) : 
 endforeach; 

	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPage(4)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 $cssClassName = "pagination";
	 
	 echo $paginator->toHtml($cssClassName);


####String Voodoo\Paginator::__toString()

Same as toHtml(), except it's when someone is echoing the paginator object

	
	
	$url = "http://mysite.com";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPage(4)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator;


---	
### Getters

####Voodoo\Paginator::getUri()

Return the URI of the request (the url in the address bar).
It can be used to automatically set the url based on the request uri.

In the example below, the __construct() accepts the pagePattern and  create the pagination url from the getUri();

	
	
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator);
	
	$uri = $paginator->getUri();

---

####Voodoo\Paginator::getPage()

Get the current page number

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getPage(); // -> 4

---

####Voodoo\Paginator::count()

Get the total pages 

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->count(); // 15

---

####Voodoo\Paginator::getPerPage()

Get total items per page

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getPerPage(); // 10

---

####Voodoo\Paginator::getStart()

Get the start of the count for the pagination set

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getStart(); // 30

---

####Voodoo\Paginator::getEnd()

Get the end of the count for the pagination set

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getEnd(); // 39

---

####Voodoo\Paginator::getPageUrl()

Return the page url based on the url provided 

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getPageUrl(); // http://mysite.com/pop/page/4
	 
Also it can be used to get the url of any other pages

	$page6 = $paginator->getPageUrl(6); // http://mysite.com/pop/page/6
	
---

####Voodoo\Paginator::getNextPageUrl()

Return the next page url

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getNextPageUrl(); // http://mysite.com/pop/page/5

---

####Voodoo\Paginator::getPrevPageUrl()

Return the previous page url

	
	
	$url = "http://mysite.com/pop/page/4";
	$pagePattern = "/page/(:num)";
	$totalItems = 150;
	$totalPerPage = 10;
	
	$paginator = (new Voodoo\Paginator)
	                ->setUrl($url, $pagePattern)
	                ->setItems($totalItems, $totalPerPage)
	                ->setPrevNextTitle("Prev",	"Next")
	                ->setFirstLastTitle("First", "Last");
	                
	 echo $paginator->getPrevPageUrl(); // http://mysite.com/pop/page/3

---

### Using Paginator with SQL Query

	
	/**
	 * Using Paginator with SQL query
	 * 
	 * We will execute two queries, one to count all entries, 
	 * the second one to get all the data with LIMIT and OFFSET
	 */