Verification: a143cc29221c9be0

Paging in php with css

Création de Pagination avec Bootstrap

La pagination est assez souvent utilisée dans certaines ou autre forme dans presque toutes les applications web.

Par exemple, il est utilisé par les moteurs de recherche pour afficher un nombre limité de résultats sur les pages de résultats de recherche, ou dans un blog ou un forum pour montrer un nombre limité de postes ou de commentaires pour chaque page.

Pour créer une pagination avec Bootstrap on utilise la classe "pagination" dans un élément HTML de liste comme suit:






Exemple de Bootstrap3 La pagination



 

Ou si on veut tout simplement sans les  « ; et » comme suit :


 
 

Pagination pour les personnes handicapées et les États de l'actif

Les liens à l'intérieur de la pagination de Bootstrap peuvent être davantage personnalisées pour différentes circonstances, comme lorsque l'utilisateur approche à une fin ou début de page en  indiquant le numéro de page actuel à l'utilisateur.

Utilisez la classe .disabled pour réaliser les liens non cliquables et la classe .active pour indiquer la page en cours comme le montre le code suivant :

Sélectionner le code



 

Remarque : La classe .disabled ne suprime pas la fonction cliquer elle montre seulement qu’il ne faut pas cliquer.

Changer la taille de Pagination

Vous pouvez également modifier la taille de pagination pour augmenter ou diminuer la zone cliquable.

Ajouter les classes  .pagination-lg, ou .pagination-sm à la classe de base .pagination pour la création de pagination de taille plus ou moins grande.

Voici le code :


Pager de Bootstrap

Parfois, vous pouvez simplement exiger les liens précédent et suivant sur votre site Web pour fournir une navigation simple et rapide à l'utilisateur plutôt que la pagination complexe tel que nous venons de voir  ci-dessus.

Cela peut être fait à l'aide de la classe de  Bootstrap .pager comme suit.

	  
 
 

Alignement du Pager

Par défaut les élément du pager sont alignés horizontalement au centre mais vous pouvez aligner le lien précédent à gauche et le lin suivant à droite en utilisant respectivement la classe .previous .next .

Voici le code :

I. Préface▲

Bonjour à tous !
Dans ce tutoriel, je vais tenter de vous expliquer un petit algorithme très courant, mais pas si évident au début : la pagination automatique.
Je prendrai l'affichage des messages d'un livre d'or pour exemple.
Bien entendu, je ne vais pas vous déballer le code comme ça.
Nous allons le programmer ensemble.

II. Le but !▲

Notre but est de créer un système de pagination pour afficher les messages de notre livre d'or.
Jusqu'à maintenant, nous affichions tous les messages sur une seule page.
Vu la quantité actuelle, cela devient impossible.
Puisque de nouveaux messages sont régulièrement ajoutés au livre d'or, le système doit être automatisé.
Notre système devra en plus nous permettre de changer facilement le nombre de messages affichés par page.

III. La table utilisée pour le script▲

Pour notre script, nous allons utiliser la table d'un livre d'or tout simple :

L'id est un champ qui ne comporte qu'un numéro. Ce numéro augmente de 1 à chaque nouveau message (auto-incrémentation).
L'id va nous permettre de trier les messages : celui qui a le plus grand ID est celui qui a été posté le plus récemment.

Je vous conseille de copier le code SQL ci-dessous puis de l'installer chez vous afin de pouvoir tester le code.
J'ai même inséré quelques messages, histoire d'avoir un peu de matière pour utiliser le script.

Table livredor pour pouvoir suivre ce tutoriel

Sélectionnez

CREATE TABLE `livredor` (
  `id` bigint(20) NOT NULL auto_increment,
  `pseudo` text,
  `message` text,
  KEY `id` (`id`)
) TYPE=MyISAM;
 
INSERT INTO `livredor` VALUES ('1','Tonio','Salut !
C\'est vraiment un super site ! ! !');
INSERT INTO `livredor` VALUES ('2','Jacot','Bravo !
Je te félicite pour ton site...');
INSERT INTO `livredor` VALUES ('3','Paul','Merci pour ce site très instructif !
Bonne continuation. :o)');
INSERT INTO `livredor` VALUES ('4','AZERTY','Cool.
Super design !');
INSERT INTO `livredor` VALUES ('5','MagaMan','Bravo !
Super le livre d\'or...');
INSERT INTO `livredor` VALUES ('6','Giro','10/10 !
Encore merci !');
INSERT INTO `livredor` VALUES ('7','Sms','tro bi1 ton site!');
INSERT INTO `livredor` VALUES ('8','All','C\'est rigolo comme site. ^^');
INSERT INTO `livredor` VALUES ('9','Moi','Bien joué.
C\'est un site très réussit !');
INSERT INTO `livredor` VALUES ('10','Weby','J\'adore !
Allez voir mon site :
www.monsite.com');
INSERT INTO `livredor` VALUES ('11','Cool','Très bon design, très bon site. ');
INSERT INTO `livredor` VALUES ('12','LEGEANTDU75','C\'est un peu vide, mais sympa quand même.
Bon courage.');
INSERT INTO `livredor` VALUES ('13','Prune','Oh lalalala !
Le boooo site ! ;o)');

IV. Réalisation du script▲

Nous allons maintenant commencer à faire notre script.

IV-A. Compter le nombre de pages▲

Pour commencer ce script, nous allons compter le nombre de pages.
Pour compter le nombre de pages, nous allons commencer par compter tous les messages contenus dans le livre d'or.
Ensuite, nous allons mettre le nombre total de messages dans la variable $total.
Voici le code qui nous permettra de compter le nombre de messages :

Compter le nombre de messages

Sélectionnez


$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); 
$donnees_total=mysql_fetch_assoc($retour_total); 
$total=$donnees_total['total']; 

Maintenant que nous avons le nombre total de messages, nous allons en déduire le nombre de pages grâce à une division et nous le mettrons dans la variable $messagesParPage.
Pour ce faire, nous allons diviser le nombre total par le nombre de messages à afficher par page.
Attention, le résultat de la division risque d'être un nombre à virgule. Si c'est le cas, nous devrons prendre le nombre entier (sans virgule) supérieur, car imaginons que vous affichiez 5 messages par page et que vous ayez 17 messages; 17/5=3,4 et 3,4 page n'est pas un nombre correct de pages. Il va donc falloir créer la 4e page qui contiendra 2 messages.
Pour avoir le nombre entier supérieur, nous devons utiliser la fonction ceil()Lien vers la documentation PHP au sujet de la fonction ceil(). Dans notre code, nous mettrons le nombre total de pages dans la variable $nombreDePages. Voici donc le code précédent complété de manière à avoir le nombre de pages :

Calculer le nombre de pages

Sélectionnez

$messagesParPage=5; 
 

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); 
$donnees_total=mysql_fetch_assoc($retour_total); 
$total=$donnees_total['total']; 
 

$nombreDePages=ceil($total/$messagesParPage);

IV-B. Afficher les messages correspondant à la page actuelle▲

Maintenant que nous avons réussi à compter le nombre de pages, nous allons essayer d'afficher les messages de la page actuelle.
Pour cela, nous allons donc devoir sélectionner une gamme de messages dans la table livredor par ordre d'id décroissant (nous affichons les messages du plus récent au plus ancien).
Pour trier par ordre d'id décroissant, nous devons ajouter ceci à notre requête SQL (après les WHERE) : ORDER BY id DESC.

À savoir pour trier les résultats d'une requête SQL dans l'ordre croissant ou décroissant :

vous devez écrire ORDER BY. Ensuite, vous ajoutez le nom du champ utilisé pour trier et pour terminer, vous pouvez ajouter DESC si vous souhaitez l'ordre décroissant. Si vous souhaitez l'ordre croissant, ne mettez rien…

Sachez que pour les nombres, il s'agit du classement ordinal que l'on a l'habitude d'utiliser et que pour les lettres, il s'agit de l'ordre alphabétique (croissant) ou inverse (décroissant).

Pour avoir une gamme précise (par exemple avoir depuis le message 5 jusqu'au message 10), nous devons ajouter ceci à notre requête SQL (après les WHERE et les ORDER BY) :

Préciser une gamme avec LIMIT

Sélectionnez

LIMIT 5, 5

À savoir pour obtenir une gamme précise :

vous devez utiliser LIMIT. Ensuite, vous devez ajouter le numéro de la première entrée à afficher en sachant que le premier nombre n'est pas 1 mais 0, et pour terminer, le nombre total que l'on veut récupérer.

Exemple : pour afficher le message 6 au message 15, il faut mettre LIMIT 5, 10. Essayez de bien comprendre cela, c'est très important pour la suite.

Avant de faire notre requête, nous allons devoir savoir dans quelle page nous sommes.
Pour cela, nous allons dire que le numéro de la page actuelle est contenu dans la variable $_GET['page'] (donc sous la forme livredor.php?page=[n° de la page]).
Si la variable $_GET['page'] n'existe pas, nous allons dire que nous sommes dans la page 1.
Nous allons rajouter une petite condition de telle manière que si le numéro de page contenu dans $_GET['page'] est supérieur au nombre total de pages ($nombreDePage), alors la page sera la page maximum.
Pour savoir si une variable existe, il faut utiliser la fonction isset()Lien vers la documentation PHP au sujet de la fonction isset().
Voici donc le bout de code permettant d'afficher le numéro de la page ajouté au code précédent :

Savoir dans quelle page nous sommes

Sélectionnez

$messagesParPage=5; 
 

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); 
$donnees_total=mysql_fetch_assoc($retour_total); 
$total=$donnees_total['total']; 
 

$nombreDePages=ceil($total/$messagesParPage);
 
if(isset($_GET['page'])) 
{
     $pageActuelle=intval($_GET['page']);
 
     if($pageActuelle>$nombreDePages) 
     {
          $pageActuelle=$nombreDePages;
     }
}
else 
{
     $pageActuelle=1; 
}

Bon, maintenant que nous avons le n° de la page que nous souhaitons afficher, il faut qu'on fasse notre requête SQL et que l'on affiche les messages.
Notre requête va utiliser une ORDER BY pour avoir les messages dans l'ordre d'id décroissant de manière à avoir les messages les plus récents en premier.
Notre requête va aussi utiliser LIMIT pour sélectionner une plage de messages.
La partie que nous aurons à modifier à chaque page est la plage de messages.
Nous devons donc indiquer à LIMIT la première entrée à lire et combien d'entrées nous voulons lire ensuite.
Nous avons déjà la première partie, elle est contenue dans la variable $messagesParPage.
Il ne nous reste donc plus qu'à indiquer la première entrée à lire ($premiereEntree).
Nous allons devoir le calculer avec la page actuelle ($pageActuelle) et le nombre de messages par page ($messagesParPage).
Nous allons retirer 1 à $pageActuelle puis multiplier $pageActuelle par $messagesParPage.
Faites le calcul vous-même.
Pour $pageActuelle=1 : $pageActuelle-1=0, 0*5=0 => Nous lisons les entrées à partir de l'entrée 0 soit la première entrée.
Pour $pageActuelle=2 : $pageActuelle-1=1, 1*5=5 => Nous lisons les entrées à partir de l'entrée 5 soit la sixième (qui est la première de la deuxième page).
Si vous avez le courage, vous devriez pouvoir faire la requête vous-même.
Voici donc le code précédent avec la requête en plus.
J'ai même rajouté l'affichage des messages en bonus (ce n'est pas l'objet du cours et si vous êtes ici, c'est que vous savez le faire…).

Afficher les messages de la page en cours

Sélectionnez

$messagesParPage=5; 
 

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); 
$donnees_total=mysql_fetch_assoc($retour_total); 
$total=$donnees_total['total']; 
 

$nombreDePages=ceil($total/$messagesParPage);
 
if(isset($_GET['page'])) 
{
     $pageActuelle=intval($_GET['page']);
 
     if($pageActuelle>$nombreDePages) 
     {
          $pageActuelle=$nombreDePages;
     }
}
else 
{
     $pageActuelle=1; 
}
 
$premiereEntree=($pageActuelle-1)*$messagesParPage; 
 

$retour_messages=mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
 
while($donnees_messages=mysql_fetch_assoc($retour_messages)) 
{
     
     
     echo '                                                     
                                                     
            
Ecrit par : '.$donnees_messages['pseudo'].'
'.nl2br($donnees_messages['message']).'


'; }

Les messages sont affichés directement à leur sortie de la base de données !

Cette méthode peut s'avérer dangereuse s'il s'agit de messages entrés par les visiteurs : l'un d'entre eux peut entrer du code HTML ou JavaScript et ainsi détourner vos visiteurs ou voler les cookies !

Il est donc fortement conseillé d'utiliser la fonction htmlentities()Lien vers la documentation PHP au sujet de la fonction htmlentities() qui va remplacer les caractères spéciaux ( compris ) entités HTML et qui rendra donc les codes impossibles à interpréter par les navigateurs.

Voilà, la partie d'affichage des messages en fonction de la page actuelle est terminée, mais il manque une chose très importante pour notre système de pagination automatique : la liste des pages.

IV-C. Afficher la liste des pages▲

C'est la dernière chose qu'il nous reste à faire. Il s'agit d'un petit bout de code qui va nous permettre d'afficher la liste des pages avec un lien pointant vers chacune d'elles.
Il existe de très nombreuses manières d'afficher les pages qui sont plus ou moins compliquées.
La méthode que nous allons programmer ici est peut-être la plus simple de toutes.
Cette méthode consiste tout simplement en une liste de toutes les pages. Cette méthode peut s'avérer inappropriée si vous avez des centaines de pages.
Je vous préviens, ce n'est pas compliqué à faire du tout.
D'ailleurs, c'est tellement simple que nous allons corser un peu la difficulté : nous allons encadrer la page actuelle par [ et ] et La page actuelle sera la seule qui ne sera pas un lien.
Rassurez-vous, ça ne va pas être très compliqué… Nous allons devoir faire une boucle de type for.
Nous allons prendre pour départ la variable $i=1, nous allons l'incrémenter de 1 à chaque passage et nous allons nous allons continuer jusqu'à ce que $i>=$nombreDePages.
Dans cette boucle nous afficherons un chiffre ($i) qui sera un lien vers livredor.php?page=$i. Dans cette boucle, nous allons aussi mettre une condition de manière à ce que la page actuelle soit juste encadrée par [ et ].
Pour savoir s'il s'agit de la page actuelle, il suffira de savoir si $i==$pageActuelle. Si c'est le cas, on encadre ; sinon on en fait un lien. Voici donc le code précédent avec en plus la liste des pages.

Affichage la liste des pages

Sélectionnez

$messagesParPage=5; 
 

$retour_total=mysql_query('SELECT COUNT(*) AS total FROM livredor'); 
$donnees_total=mysql_fetch_assoc($retour_total); 
$total=$donnees_total['total']; 
 

$nombreDePages=ceil($total/$messagesParPage);
 
if(isset($_GET['page'])) 
{
     $pageActuelle=intval($_GET['page']);
 
     if($pageActuelle>$nombreDePages) 
     {
          $pageActuelle=$nombreDePages;
     }
}
else 
{
     $pageActuelle=1; 
}
 
$premiereEntree=($pageActuelle-1)*$messagesParPage; 
 

$retour_messages=mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
 
while($donnees_messages=mysql_fetch_assoc($retour_messages)) 
{
     
     
     echo '                                                     
                                                     
            
Ecrit par : '.stripslashes($donnees_messages['pseudo']).'
'.nl2br(stripslashes($donnees_messages['message'])).'


'; } echo '

Page :

'; for($i=1; $i$nombreDePages; $i++) { if($i==$pageActuelle) { echo ' [ '.$i.' ] '; } else { echo ' '.$i.' '; } } echo '';

Voilà, le code de pagination automatique est terminé !

V. Pour aller plus loin▲

Pagination avec Pear Pager

Sélectionnez

require_once ('Pager/Pager.php');
 
$nbItems=$this->DB->getNbItems ();
 

$params = array(
    'mode'       => 'Sliding', 
    'perPage'    => 100, 
    'delta'      => 5, 
    'totalItems' => $nbItems  
);
$pager = & Pager::factory($params);
$links = $pager->getLinks();
 

$members = $this->DB->getAllItems(100, $pager->getCurrentPageID());
 
echo $links['all'];

Ce code utilise ce que l'on appelle la POO (Programmation Orientée Objet). C'est-à-dire qu'elle utilise des classes et des objets.
La POO est une notion très importante en PHP et surtout depuis la sortie de PHP5.
Si vous êtes intéressé(e) par la POO et PHP5, je vous conseille ce livre qui m'a appris beaucoup de choses : PHP5 avancéLien vers la critique du livre PHP5 avancé

La base

Partons d'une page affichant une liste d'articles issus de notre base de données, triés du plus récent au plus ancien.

Cette page exécute la requête suivante

SELECT * FROM `articles` ORDER BY `created_at` DESC;

Pour exécuter cette requête nous aurons le code PHP suivant

prepare($sql);

// On exécute
$query->execute();

// On récupère les valeurs dans un tableau associatif
$articles = $query->fetchAll(PDO::FETCH_ASSOC);

require_once('close.php');
?>

Nous affichons ensuite un tableau avec tous les articles comme ci-dessous (l'exemple utilise Bootstrap)






Document

Liste des articles

ID Titre Date
= $article['id'] ?> = $article['titre'] ?> = $article['created_at'] ?>

Mettre en place la pagination

Pour pouvoir paginer, il nous faut connaître plusieurs informations :

  • Le numéro de la page sur laquelle on se trouve
  • Le nombre d'articles au total
  • Le nombre d'articles souhaités par page
  • Le nombre de pages au total

Numéroter les pages

Nous ferons passer le numéro de la page dans l'URL, afin de pouvoir récupérer l'information en PHP. Si aucun numéro de page n'est fourni, nous considérerons que nous sommes en page 1.

L'url ressemblera, par exemple, à

https://monsite.fr/index.php?page=2

Nous aurons donc à récupérer la valeur du paramètre "page"

Le code PHP sera le suivant

// On détermine sur quelle page on se trouve
if(isset($_GET['page']) && !empty($_GET['page'])){
    $currentPage = (int) strip_tags($_GET['page']);
}else{
    $currentPage = 1;
}

Connaître le nombre d'articles

Pour connaître le nombre d'articles dans notre base de données, nous utiliserons le "COUNT" en SQL au moyen de la requête ci-dessous

SELECT COUNT(*) AS nb_articles FROM `articles`;

Pour exécuter cette requête nous utiliserons le code PHP suivant

// On détermine le nombre total d'articles
$sql = 'SELECT COUNT(*) AS nb_articles FROM `articles`;';

// On prépare la requête
$query = $db->prepare($sql);

// On exécute
$query->execute();

// On récupère le nombre d'articles
$result = $query->fetch();

$nbArticles = (int) $result['nb_articles'];

Calcul du nombre de pages

Une fois le nombre total d'articles connu, nous pourrons calculer le nombre de pages nécessaires.

Nous diviserons le nombre total d'articles par le nombre l'articles par page et nous arrondirons à l'entier supérieur.

// On détermine le nombre d'articles par page
$parPage = 10;

// On calcule le nombre de pages total
$pages = ceil($nbArticles / $parPage);

Mise en place de la pagination

Maintenant que nous connaissons toutes les informations, nous allons pouvoir définir quels articles nous devons afficher en fonction de la page chargée.

Nous allons modifier la requête en utilisant l'instruction "LIMIT" de SQL comme ceci (par exemple pour la 1ère page)

SELECT * FROM `articles` ORDER BY `created_at` DESC LIMIT 0, 10;

Il nous faut donc définir le numéro du 1er article (0 dans l'exemple) en plus du nombre d'articles par page (10 dans l'exemple) que nous avons déjà.

Nous ferons donc le calcul suivant

// Calcul du 1er article de la page
$premier = ($currentPage * $parPage) - $parPage;

Nous exécuterons ensuite la requête comme ceci

$sql = 'SELECT * FROM `articles` ORDER BY `created_at` DESC LIMIT :premier, :parpage;';

// On prépare la requête
$query = $db->prepare($sql);

$query->bindValue(':premier', $premier, PDO::PARAM_INT);
$query->bindValue(':parpage', $parPage, PDO::PARAM_INT);

// On exécute
$query->execute();

// On récupère les valeurs dans un tableau associatif
$articles = $query->fetchAll(PDO::FETCH_ASSOC);

Enfin, nous mettrons en place le code HTML pour afficher la pagination (ici avec bootstrap)

Fichier complet

Voici le fichier complet correspondant à la mise en place de la pagination

prepare($sql);

// On exécute
$query->execute();

// On récupère le nombre d'articles
$result = $query->fetch();

$nbArticles = (int) $result['nb_articles'];

// On détermine le nombre d'articles par page
$parPage = 10;

// On calcule le nombre de pages total
$pages = ceil($nbArticles / $parPage);

// Calcul du 1er article de la page
$premier = ($currentPage * $parPage) - $parPage;

$sql = 'SELECT * FROM `articles` ORDER BY `created_at` DESC LIMIT :premier, :parpage;';

// On prépare la requête
$query = $db->prepare($sql);

$query->bindValue(':premier', $premier, PDO::PARAM_INT);
$query->bindValue(':parpage', $parPage, PDO::PARAM_INT);

// On exécute
$query->execute();

// On récupère les valeurs dans un tableau associatif
$articles = $query->fetchAll(PDO::FETCH_ASSOC);

require_once('close.php');
?>





Document

Liste des articles

ID Titre Date
= $article['id'] ?> = $article['titre'] ?> = $article['created_at'] ?>

Download PaginationLinks

Download the file below and upload it to your web server.

Using PaginationLinks

Links can be created using the static create function of the PaginationLinks class. The function takes up to six parameters, but only two are required: the current page number, and the number of pages. For example:

1
2
3
4
5

require_once './class.PaginationLinks.php';


echo PaginationLinks::create(5, 9);

This outputs the following links:

1 24 5 68 9

The links include the first page, the current page, the last page, and one page either side of each of these for context, with the omitted pages being represented by ellipses (the ‘...’ symbols). The amount of context can be controlled using the optional third parameter, which defaults to 1:

1
2
3
4
5

require_once './class.PaginationLinks.php';


echo PaginationLinks::create(3, 9, 2);

This outputs the following links:

1 2 3 4 57 8 9

Note that this list includes only a single ellipsis as there are no omitted pages between the first page and current page.

La page Javascript : gridPanelPaginator.js

1) Dans le fichier javascript renommé gridPanelPaginator.js, nous allons ajouter une variable limitParPage. Sont but est de définir le nombre de ligne que l'on affichera.

var limitParPage = 2;

2) Nous allons modifier l'objet monStore afin qu'il effectue une requête sql à chaque fois que l'on trie une colonne

 remoteSort : true

2.1) Toujours dans le store, nous allons préciser que la première colonne sera trié par défaut:

       sortInfo:{
           "field": "numero_enregistrement",
           "direction": "ASC"
        }

2.2) La dernière instruction que l'on va affecter au store, permet de transmettre au PHP l'information sur le nombre de ligne que l'on affiche. Grâce à cette information, nous paramétrons la requête SQL.

       autoLoad:{
            params:{
                limit:limitParPage
            }
        }

3) On crée l'objet de pagination : maPagination

  • store : Le store du tableau afin que le PagingToolbar puis travailler avec les mêmes informations que le tableau.
  • pageSize : Le nombre de ligne que l'on affiche
  • displayInfo : Affiche en bas à droite du PagingToolbar l'information : "Page courante 1-2 sur 3"

   var maPagination = new Ext.PagingToolbar({
        store: monStore,  
        pageSize: limitParPage,
        displayInfo: true    
    });

4) On ajoute le PagingToolbar au gridPanel :

   var monGridPanel = new Ext.grid.GridPanel({
       ...

        bbar: maPagination
    });

La page php : gridPanelPaginator.php

1) Nous allons initialiser les variables envoyées par le tableau :

  • $limit : le nombre de ligne que l'on affiche.
  • $start : la plage de début. la première fois on commence a l'enregistrement 0, la page suivant commencera à 2 puis 4 ... (le PagingToolbar s'occupe du calcule pour nous )
  • $sort : le nom de la colonne par laquelle on ordonne le résultat
  • $direction : le sens de l'ordonnancement croissant (ASC) ou décroissant (DESC)

//initialisation des variables

$limit = ( isset($_POST['limit']) ) ? (int) $_POST['limit'] : 2;
$start = ( isset($_POST['start']) ) ? (int) $_POST['start'] : 0;
$sort = ( isset($_POST['sort']) ) ? $_POST['sort'] : 'numero_enregistrement';
$direction = ( isset($_POST['dir']) ) ? $_POST['dir'] : 'ASC';

2) Nous allons compter le nombre d'enregistrement total. Le PagingToolbar à besoin de savoir combien d'enregistrement il y a en tout pour définir le nombre de page.

//compte le nombre d'enregistrement total
$sql="select count(*) as total from enregistrement";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$return['total'] = $row['total'];

3) Modification de la requete principale pour y ajouter le ORDER BY et le LIMIT

$sql="SELECT numero_enregistrement,nom_enregistrement,date_creation FROM enregistrement ORDER BY $sort $direction LIMIT $start,$limit";