s-damian / damian-pagination-php
PHP library of simple Pagination
Requires
- php: ^8.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: 9.5.*
README
PHP Pagination Library - Open Source
Damian Pagination PHP - Open Source Pagination
Introduction - Damian Pagination PHP package
Damian Pagination PHP is an Open Source PHP library that allows you to generate simple and complete pagination.
This pagination is compatible for all projects in PHP (with MVC, without MVC, etc.).
This pagination is compatible with Bootstrap 5 CSS.
Paginate easily without limit!
<?php $pagination = new Pagination(); $pagination->paginate($countElements); $limit = $pagination->getLimit(); $offset = $pagination->getOffset(); echo $pagination->render(); echo $pagination->perPageForm();
Author
This package is developed by Stephen Damian
Requirements
- PHP 8.0 || 8.1 || 8.2 || 8.3
Summary
Introduction
This Open Source pagination contains PHP files, and one CSS style sheet.
An example of a CSS style sheet is in vendor/s-damian/damian-pagination-php/src/css
directory. You can edit them according to your needs.
This pagination also allows you to generate a per page. This will generate a form HTML tag with a select HTML tag and clickable options.
Installation
Installation with Composer
composer require s-damian/damian-pagination-php
Installation without Composer
If you do not use Composer to install this package, you will have to manually "require" before using this package. Example:
<?php require_once './your-path/damian-pagination-php/src/DamianPaginationPhp/bootstrap/load.php';
Pagination Instance Methods
Examples
Simple example
<?php $pagination = new Pagination(); $pagination->paginate($countElements); $limit = $pagination->getLimit(); $offset = $pagination->getOffset(); // Here your SQL query with $limit and $offset // Then your listing of elements with a loop echo $pagination->render(); echo $pagination->perPageForm();
Example rendering of pagination with Bootstrap 5:
Example with SQL queries
<?php use DamianPaginationPhp\Pagination; // Count articles in DB function countArticles(): int { $sql = "SELECT COUNT(*) AS nb FROM articles"; $query = db()->query($sql); $result = $query->fetch(); return $result->nb; } // Collect articles from DB function findArticles($limit, $offset) { $sql = "SELECT * FROM articles LIMIT ? OFFSET ?"; $query = db()->prepare($sql); $query->bindValue(1, $limit, PDO::PARAM_INT); $query->bindValue(2, $offset, PDO::PARAM_INT); $query->execute(); return $query; } // Creating an object Pagination $pagination = new Pagination(); // Paginate $pagination->paginate(countArticles()); $limit = $pagination->getLimit(); $offset = $pagination->getOffset(); $articles = findArticles($limit, $offset); // Show elements one by one that are retrieved from the database foreach ($articles as $article) { echo htmlspecialchars($article->title); } // Show the Pagination echo $pagination->render(); // Show the per page echo $pagination->perPageForm();
The function db()
is a return of result of the database connection (PDO instance for example).
Depending on your needs, you can also use this library with your favorite ORM.
Example with a list of files of a directory
<?php use DamianPaginationPhp\Pagination; $scandir = scandir('your_path_upload'); $listFilesFromPath = []; $count = 0; foreach ($scandir as $f) { if ($f !== '.' && $f !== '..') { $listFilesFromPath[] = $f; $count++; } } // Creating an object Pagination $pagination = new Pagination(); // Paginate $pagination->paginate($count); $limit = $pagination->getLimit(); $offset = $pagination->getOffset(); // Listing $files = array_slice($listFilesFromPath, $offset, $limit); // Show files one by one foreach ($files as $file) { echo $file; } // Show the Pagination echo $pagination->render(); // Show the per page echo $pagination->perPageForm();
Add argument(s) to the instance
<?php // To change number of Elements per page: $pagination = new Pagination(['pp' => 50]); // Is 15 by default // To change number of links alongside the current page: $pagination = new Pagination(['number_links' => 10]); // Is 5 by default // To change the choice to select potentially generate with perPageForm(): $pagination = new Pagination(['options_select' => [5, 10, 50, 100, 500, 'all']]); // The value of 'options_select' must be a array. // Only integers and 'all' are permitted. // Options are [15, 30, 50, 100, 200, 300] by default. // To change the CSS style of the pagination (to another CSS class as default): $pagination = new Pagination(['css_class_p' => 'name-css-class-of-pagintion']); // The CSS class name is by default "pagination". // To change the CSS style of the pagination active (to another CSS class as default): $pagination = new Pagination(['css_class_link_active' => 'name-css-class-of-pagintion']); // The active CSS class name is by default "active". // To change the CSS style of a per page (select) (to another id id as default): $pagination = new Pagination(['css_id_pp' => 'name-css-id-of-per-page-form']); // The CSS ID name is by default "per-page-form". // To use Bootstrap CSS: $pagination = new Pagination(['css_class_p' => 'pagination']); // The CSS class name is by default "block-pagination" // We must put "pagination"
Custom config
You can change the default language. It's english (en) by default.
Supported languages: "cn", "de", "ee", "en", "es", "fr", "it", "jp", "pt", "ru".
Set default language:
<?php use DamianPaginationPhp\Config\Config; // Change the language to "fr" (it's "en" by default. Config::set(["lang" => "fr"]);
Support
Bugs and security Vulnerabilities
If you discover a bug or a security vulnerability, please send a message to Stephen. Thank you.
All bugs and all security vulnerabilities will be promptly addressed.
License
This project is an Open Source package under the MIT license. See the LICENSE file for details.