Système de pagination complet

Soyez le premier à donner votre avis sur cette source.

Vue 18 439 fois - Téléchargée 2 433 fois

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

Ajouter un commentaire Commentaires
Messages postés
30
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
2 avril 2011
1
Je sais pas, il faudrait poster l'erreur dans la section forum. Moi je n'utilise pas EasyPHP, je préfère Wampserver qui pose moins de problème.
Messages postés
9
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
20 janvier 2007

j'ai installé la dernière version d'easyphp et le message était :
Warning: PDO::__construct() [pdo.--construct]: [2002] Aucune connexion n'a pu ?tre ?tablie car l'ordinateur cible l'a (trying to connect via tcp://localhost:3306) in C:\Program Files (x86)\EasyPHP-5.3.5.0\www\...\index.php on line 20
echec connexion
puis apres ajout du $e->getMessage(); echo($e); die("echec connexion
"); le message ajouté est :
exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Aucune connexion n'a pu ?tre ?tablie car l'ordinateur cible l'a express?ment refus'e. ' in C:\Program Files (x86)\EasyPHP-5.3.5.0\www\a_x_i_b_l_e\phpPager\modeleIntermediaire\index.php:20 Stack trace: #0 C:\Program Files (x86)\EasyPHP-5.3.5.0\www\a_x_i_b_l_e\phpPager\modeleIntermediaire\index.php(20): PDO->__construct('mysql:host=loca...', 'root', '') #1 {main}echec connexion
avec :
$bdd = new PDO('mysql:host='.$host.';dbname='.$db, $login, $pass);
merci de votre aide
Messages postés
30
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
2 avril 2011
1
Problème de connexion à la base de données, Faire un $e->getMessage() dans le bloc catch et vérifier les identifiants dans connexion.php
Messages postés
9
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
20 janvier 2007

bonjour,
cette source est excellente, mais hélas, je n'arrive pas à trouver pourquoi j'ai un "echec connexion" en local avec easyphp5.3.1.0...
j'ai tenté de changer le port 3306 en 8888 ou 80 ou même le supprimer
$bdd = new PDO('mysql:host='.$host.';dbname='.$db.';port=3306', $login, $pass);

un coup de main serait bienvenue, j'aimerais devenir un vrai débutant svp
merci
Messages postés
1
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
7 mai 2010

Bonjour,

Ta source est vraiment intéressante, bien faite. Mon besoin est de paginer ma page en trois parties. Comment peux je l'adapter pour faire ça. Merci pour la réponse.
Afficher les 12 commentaires

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.