Système de pagination complet

Description

Bonjour, PHPPager est une implémentation d'un système de pagination en PHP 5 (5.3.0 minimum) entièrement modulable avec spéparation complète de la partie algorithme de la partie présentation, il est alors très facile de personnaliser l'affichage.

Je fournis des exemples avec plusieurs modèle de template d'affichage.
Merci commenter cette source pour donner votre avis, pour toutes suggestions d'amélioration, correction de bug...

demo et documentation :

http://www.guillaume-genet.fr/phpPager

installation (pour les pages de test) :
- créer une base de données (ex: pager)
- exécuter le script pager.sql pour créer le jeu de test
- configurer la connexion à la page de données dans le fichier connexion.php

Source / Exemple :


//index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<?php
	  require_once __DIR__.'/../../../lib/autoload.php';
	  require_once __DIR__."/../../../connexion.php";
	?>

	<head>
		<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
	    <link href="pager.css" rel="stylesheet" type="text/css" />
	    <script src="../../../jquery-1.6.1.min.js"></script>
	</head>
	<body>

		<h1> Exemple sliding </h1>
		<?php require_once(__DIR__.'/../../getSource.php');?><br /><br />
		<a href="../../../index.php">Retour</a>
		<?php  
		  $query = "select count(*) as total from article";
		  $stm = $bdd->query($query);
		  
		  $result = $stm->fetch();
		  $stm->closeCursor();
		  $stm = null;
	
		  $pager = new Pager\Pager(new \Pager\Scrolling\Sliding(5));
		  $pager->setItemCount($result['total']);
		  $pager->setItemCountPerPage(6); 
		  $pager->setUrl("index.php?page=%d%"); 

		  if(isset($_GET["page"]))  
		  {
		  		//setPage renvoie une erreur si le numéro de page est incorrecte ou si on a pas passé un entier -> 
		    	//cela permet de prévenir le cas où l'utilisateur tente d'accéder à une page qui n'existe pas.
			    //Il faut donc catcher l'exception et renvoyer sur la page d'ereur du site, voir logger l'erreur dans un fichier
			    try 
			    {
			        $pager->setPage(intval($_GET["page"])) ;
			    }
			    catch(Exception $e) 
			    {
			        echo "erreur:".$e->getCode()." : ".$e->getMessage();
			        //echo "La page ".$_GET["page"]." n'existe pas <br/>";
		       		die();
		   	 	}
	  	  }
	  	  
		  //construction de la requête
	  	  $query = "select * from article limit ".$pager->getLeftLimit().", ".$pager->getRightLimit();

		  $stm = $bdd->query($query);
		  $stm->setFetchMode(PDO::FETCH_OBJ);
		  $articles = $stm->fetchAll();
	  	?>
	  	
		<!-- affichage des articles -->
		<?php foreach ($articles as $article): ?>
		   <p>
		      Titre : <?php echo $article->titre; ?>
		      <br/>
		      Texte:  <?php echo $article->contenu; ?>
		   </p>    
		   
		<?php endforeach; ?>
			  
		<?php 
		  	if($pager->haveToPaginate())
		  		include "pager.php"; //inclusion du template 
		?>	
	</body>
</html>

// pager.php

<div id="pager">
    Page <?php echo $pager->getCurrentPage();?> sur  <?php echo $pager->getLastPage();?>, 
    De <?php echo $pager->getFirstIndice()+1;?> à <?php echo $pager->getLastIndice()+1;?>
    <br/>  
    
    <!-- première page-->
    <a href="<?php echo $pager->rewriteUrl($pager->getFirstPage()); ?>" > << </a>
    
    <!-- page précédente -->  
    <?php if($pager->getPreviousPage() !== null) : ?>
      	<a href="<?php echo $pager->rewriteUrl($pager->getPreviousPage()); ?>" > < </a>
    <?php endif; ?>
    &nbsp; 
    
    <!-- liste les pages -->   
   <?php foreach($pager->getPages() as $numPage): ?>
       <?php if($numPage == $pager->getCurrentPage()): ?>
          [<?php echo $numPage; ?>]
       <?php else : ?>
          <a href="<?php echo $pager->rewriteUrl($numPage)?>"><?php echo $numPage; ?></a>
       <?php endif; ?>
    <?php endforeach; ?>
    
    &nbsp;
    <!-- page suivante -->  
    <?php if($pager->getNextPage() !== null) : ?>
      	<a href="<?php echo $pager->rewriteUrl($pager->getNextPage()); ?>" > > </a>
    <?php endif; ?>
    
    <!-- dernière page-->
    <a href="<?php echo $pager->rewriteUrl($pager->getLastPage()); ?>" > >> </a>     
</div>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.