Pagination en PHP

**English version not implemented yet**

Qu'est-ce que c'est ?

Pagination est une class PHP qui vous permet de créer rapidement et simplement une pagination.
Celle-ci est très facilement configurable et est générée à partir du Bootstrap twitter.

J'ai souhaité faire cette petite classe, car je n'aime pas les paginations simples avec juste deux flèches "précédent/suivant", et les paginations où l'on ne voit pas le nombre de pages totales.

J'ai donc crée une pagination comme je les aime, et décide donc de la partager car même si de gros framework en utilise une version similaire, voire plus évoluée, si vous n'utilisez pas de framework, vous pourrez quand même utiliser un script convenable !

Le script est actuellement en anglais, (idem pour la documentation des fonctions), mais il se peux que les traductions soient mauvaises. En effet, mon anglais est plus qu'approximatif. Donc si quelqu'un souhaite m'aider, qu'il le fasse !

Configuration

La configuration est très simple. Il vous suffit de télécharger le code source se trouvant sur github : https://github.com/Zheness/Pagination/

Vous le copiez dans un fichier nommé pagination.class.php, ou un autre nom de votre choix.
Puis il suffit de l'inclure à votre page PHP :

include 'pagination.class.php';
            

Options par défaut

Voici à quoi ressemble la barre de navigation, avec les options par défaut :

$Pagination = new Pagination();
$pagination = $Pagination->renderBootstrapPagination();

echo $pagination;
            

Toutes les options

Voici maintenant toutes les options de configuration de cette classe :

$Pagination2 = new Pagination();
$Pagination2->setCurrentPage(42);
$Pagination2->setInnerLinks(6);
$Pagination2->setNbElementsInPage(30);
$Pagination2->setNbMaxElements(5000);
$Pagination2->setLinksSeparator('--');
$pagination2 = $Pagination2->renderBootstrapPagination();

echo $pagination2;
            

Gestion de l'url

Par défaut, lors du clique sur le lien de la barre, la page se recharge avec le paramètre ?page=X, où X correspond au numéro de page.

Or, vos pages ne prennent pas tous cette forme.
Il est donc possible de configurer l'url de sortie à votre guise.

Attention : il faut indiquer dans l'url le code {i} correspondant au numéro de page.

$Pagination3 = new Pagination();
$Pagination3->setUrl("/category/foo/url/bar/page/{i}/sort-by/baz");
$pagination3 = $Pagination3->renderBootstrapPagination();

echo $pagination3;
            

En pratique

Lors de mes exemples ci-dessus, j'ai utilisé des valeurs fixes, et brutes. À vous de configurer votre code avec vos éléments.

$nbElements = $pdo->exec("SELECT COUNT(*) FROM articles");
$PaginationFinal = new Pagination();
$PaginationFinal->setCurrentPage($_GET['page']);
$PaginationFinal->setInnerLinks(3);
$PaginationFinal->setNbElementsInPage(20);
$PaginationFinal->setNbMaxElements($nbElements);
$paginationFinal = $PaginationFinal->renderBootstrapPagination();

echo $paginationFinal;
            

Attention : Je n'ai pas protégé ici les variables $_GET ni instancié l'objet PDO. Ceci n'est qu'un exemple d'utilisation concret. À vous de sécuriser votre application.