Fonction de pagination inversee ou non depuis une bdd ou un dossier

Description

Ceci est une fonction de pagination simple depuis une base de donnée ou un dossier, facilement configurable et intégrable avec le possibilité de la mettre en invérsée ou de la laisser normale.
plusieurs ZIP disponible:

BDD_ (pagination depuis un table SQL
-"mode complet" pour les novices
-"mode invérsé ou normal"
-"mode no_fonction" a integrer directement a la page

DOSSIER (pagination depuis un dossier)
-"mode complet" pour les novices
-"mode invérsé ou normal"
-"mode no_fonction" a integrer directement a la page

Source / Exemple :


//---------------------index.php--------------------------

<?php

$depuis = 'bdd';//pour paginer un dossier mettre 'folder'
$dossier= 'gallerie';//chemin du dossier a paginer si vous faite une pagination depuis un dossier, si ce n'est pas le cas laissez tel quel

if($depuis == 'bdd'){
///////////vos identifiant de connection bdd\\\\\\\\\\\\\\\
$db = mysql_connect('localhost', 'login', 'password');
mysql_select_db('nom_de_la_base',$db);
///////////////////////////////////////////////////////////
}
require ('fonction_pagination.php');

///////////////////page///////////////////////////////////

$conteneur_bd_debut = '<table border="1"><tr><td bgcolor="red" width="300" height="300">';
$conteneur_bd_fin = '</tr></td></table>';

$conteneur_pg_debut = '<table border="1"><tr><td bgcolor="yellow" width="300">';
$conteneur_pg_fin = '</tr></td></table>';

/////////////////////a editer\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//-------------------Général---------------------------\\

$inverse = 'non';//pour avoir la pagination invérsée (oui ou non)
$nbr_par_page = 1;//nombre d'éléments par pages
$nbr_liens = 5;//nombre de liens a afficher

//----------------------SQL-----------------------------\\

$champ = 'truc';// champ de la table a séléctionner (SELECT)
$table = 'test';//la table a séléctionner (FROM)
$where = 'id'; //a trier par... (par defaut id)

////limite de recherche BDD (utile si la table a paginer est consequente)
$active = 'oui';// 'oui' pour activer cette fonction

$limite_debut = '0';//..trié les id entre...
$limite_fin ='100';//..et... 

//-------------------------------------------------------\\
/////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
if(isset($_GET['page'])){
if(is_numeric($_GET['page']) && strlen($_GET['page']) < 5){
$page = addslashes($_GET['page']);
}
else{
echo 'Un problème est survenu';
exit();
}
}

//////////////////appel de la fonction\\\\\\\\\\\\\\\\\\\\\\\

pagination($depuis, $conteneur_bd_debut, $conteneur_bd_fin, $conteneur_pg_debut, $conteneur_pg_fin, $page, $nbr_par_page, $nbr_liens, $inverse, $champ, $table, $where, $active, $limite_debut, $limite_fin, $dossier);
?>

//-----------------fonction_pagination.php-----------------

<?php
function pagination($depuis, $conteneur_bd_debut, $conteneur_bd_fin, $conteneur_pg_debut, $conteneur_pg_fin, $page, $nbr_par_page, $nbr_liens, $inverse, $champ, $table, $where, $active, $limite_debut, $limite_fin, $dossier){
if($depuis == 'bdd'){
if($active == 'oui'){
$sql = "SELECT $champ FROM $table WHERE $where BETWEEN $limite_debut AND $limite_fin";
}
else{
$sql = "SELECT $champ FROM $table ORDER BY $where";
}
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data1 = mysql_fetch_assoc($req))
{
$tableau[] = $data1[$champ];
}
}
else{
$tableau = array(); 
if(is_dir($dossier)) {
$dir = opendir($dossier) or die('Impossible d\'ouvrir le dossier');

while (false !== ($file = readdir($dir))) {
if ($file != '.' && $file != '..') {
$tableau[] = $file;
}
}
}
}
$total = count($tableau);
$nbr_pages = ceil($total/$nbr_par_page);
if(!isset($page)){
if($inverse == 'non'){
$page = '1';
}
else{
$page = $nbr_pages;
}
}
if($nbr_liens >= $nbr_pages){
$nbr_liens = $nbr_pages;
}
if($page >= $nbr_pages){
$page = $nbr_pages;
}
if($inverse == 'non'){
$liens = ceil($nbr_liens/2);
$pagination_debut = $page-$liens;
if($pagination_debut < '1'){
$pagination_debut = 1;
$pagination_fin = $nbr_liens;
}
if(!isset($pagination_fin)){
$pagination_fin = $page+$liens;
if($pagination_fin >= $nbr_pages){
$pagination_fin = $nbr_pages+1;
}
}
}
else{
$nbr_pages = ceil($total/$nbr_par_page);
if($nbr_liens >= $nbr_pages){
$nbr_liens = $nbr_pages;
}
if($page >= $nbr_pages){
$page = $nbr_pages;
}
$liens = ceil($nbr_liens/2);
$pagination_debut = $page-$liens;
if($pagination_debut <= '1'){
$pagination_debut = 0;
$pagination_fin = $nbr_liens;
}
if(!isset($pagination_fin)){
$pagination_fin = $page+$liens;
if($pagination_fin >= $nbr_pages){
$pagination_fin = $nbr_pages;
}
}
}
echo $conteneur_bd_debut;
$page_fin = $page*$nbr_par_page;
$page_debut = $page_fin-$nbr_par_page;
for ($a=$page_debut; $a<$page_fin; $a++){
if($depuis == 'bdd'){
echo $tableau[$a];
}
else{
echo '<img src="'.$dossier.'/'.$tableau[$a].'">';//affichage des images
}
}
echo $conteneur_bd_fin, $conteneur_pg_debut;
if($inverse == 'non'){
if($page > '1'){
$precedent = $page-1;
$acces_precedent = '<a href="index.php?page='.$precedent.'">< </a>';
}
else{
$acces_precedent = False;
}
if($pagination_debut > '1'){
$acces_debut = '<a href="index.php?page=1"><< </a>';
$rognage_precedent = '...';
}
else{
$acces_debut = False;
$rognage_precedent = False;
}
echo $acces_debut, $acces_precedent, $rognage_precedent;
}
else{
if($pagination_fin < $nbr_pages){
$rognage_suivant = '...';
$acces_fin = '<a href="index.php?page='.$nbr_pages.'"> <<</a>';
}
else{
$rognage_suivant = False;
$acces_page_fin = False;
$acces_fin = False;
}
if($page < $nbr_pages){
$suivant = $page+1;
$acces_suivant = '<a href="index.php?page='.$suivant.'"> <</a>';
}
else{
$acces_suivant = False;
}
echo   $acces_fin, $acces_suivant, $rognage_suivant;
}
if($inverse == 'non'){
for ($b=$pagination_debut; $b<$pagination_fin; $b++){
$numero = $b;
$pointeur = str_replace($page,'<b><font size="4">'.$page.'</font></b>',$numero);
$chaine.= '<a href="index.php?page='.$b.'">'.$pointeur.'</a>|';
$pointeur = str_replace($chaine,'<b><font size="4">'.$page.'</font></b>',$chaine);
}
echo $chaine;
}
else{
for ($b=$pagination_fin; $b>$pagination_debut; $b--){
$numero = $b;
$pointeur = str_replace($page,'<b><font size="4">'.$page.'</font></b>',$numero);
$chaine.= '<a href="index.php?page='.$b.'">'.$pointeur.'</a>|';
$pointeur = str_replace($chaine,'<b><font size="4">'.$page.'</font></b>',$chaine);
}
echo $chaine;
}
if($inverse == 'non'){
if($pagination_fin < $nbr_pages){
$rognage_suivant = '...';
$acces_page_fin = '<a href="index.php?page='.$nbr_pages.'">'.$nbr_pages.'</a>';
$acces_fin = '<a href="index.php?page='.$nbr_pages.'"> >></a>';
}
else{
$rognage_suivant = False;
$acces_page_fin = False;
$acces_fin = False;
}
if($page < $nbr_pages){
$suivant = $page+1;
$acces_suivant = '<a href="index.php?page='.$suivant.'"> ></a>';
}
else{
$acces_suivant = False;
}
echo $rognage_suivant, $acces_page_fin, $acces_suivant, $acces_fin;
}
else{
if($page > '1'){
$precedent = $page-1;
$acces_precedent = '<a href="index.php?page='.$precedent.'">> </a>';
}
else{
$acces_precedent = False;
}
if($pagination_debut > '1'){
$acces_debut = '<a href="index.php?page=1">>> </a>';
$rognage_precedent = '...';
$acces_page_debut = '<a href="index.php?page=1">1</a>';
}
else{
$acces_debut = False;
$rognage_precedent = False;
}
echo $rognage_precedent, $acces_page_debut, $acces_precedent, $acces_debut;
}
echo $conteneur_pg_fin;
if($depuis == 'bdd'){
mysql_close();
}
exit();
}
?>

//---------------------------SQL------------------------------

-- phpMyAdmin SQL Dump
-- version 2.11.0
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Sam 17 Novembre 2007 à 00:16
-- Version du serveur: 5.0.45
-- Version de PHP: 5.2.4

-- --------------------------------------------------------

--
-- Structure de la table `test`
--

CREATE TABLE `test` (
  `id` int(11) NOT NULL auto_increment,
  `truc` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

--
-- Contenu de la table `test`
--

INSERT INTO `test` (`id`, `truc`) VALUES
(1, '1'),
(2, '2'),
(3, '3'),
(4, '4'),
(5, '5'),
(6, '6'),
(7, '7'),
(8, '8'),
(9, '9'),
(10, '10'),
(11, '11'),
(12, '12'),
(13, '13'),
(14, '14'),
(15, '15'),
(16, '16'),
(17, '17'),
(18, '18'),
(19, '19'),
(20, '20'),
(21, '21'),
(22, '22'),
(23, '23'),
(24, '24'),
(25, '25'),
(26, '26');

//----------------------------------------------------------------

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.