Table des matières

Pxxo_Widget_Pagination

Ce widget permet d'afficher une barre de navigation multi-pages. Il est utile lorsque vous avez de longues listes à afficher par morceaux (par pages). Il comprend :

Voici une copie d'écran d'un exemple de rendu

Paramètres

Nom Valeur Description
lignes - Le nombre de ligne à afficher (obligatoire)
ligne 10 Le nombre de lignes par pages
lpp array(5,10,25) Les choix possibles pour le sélecteur du nombre de lignes par pages (depuis v1.0.3)
title - Permet de donner un titre facultatif au widget
show_lignes true Permet de montrer/cacher le sélecteur du nombre de lignes par pages
show_pages true Permet de montrer/cacher la liste de navigation rapide (pour sauter de page en page)
form_enable true Si ce paramètre vaut 'true', un formulaire html independant sera généré pour notre widget. Si ce paramètre vaut 'false', cela suppose que 'form_name' contient le nom d'un formulaire parent dans lequel on souhaite se greffer (facultatif)
form_name $this→ClassID Le nom du formulaire parent. Ce paramètre est ignoré si 'form_enable' est à true (facultatif)
display_anyway true Si égal à true et si il n'y a qu'une page à afficher, on affiche quand même le Widget. Si égal à false, et si il n'y a qu'une page à afficher, on cache le Widget
theme defaut Le thème du widget. Indiquez le thème 'google' si vous souhaitez une pagination à la mode google.

Remarque 1 : Lorsque form_enable est à false et form_name vaut 'monformulaire', cela suppose que l'instance de votre widget est incluse dans un formulaire existant dont l'attribut id vaudrait 'monformulaire'. Exemple:

<form action="..." id="monformulaire" method="GET"> [...]

Remarque 2 : Lorsque le thème “google” est utilisé, aucun formulaire n'est généré. Le paramètre form_name doit alors contenir les paramètres que vous désirez voir apparaître dans l'url pendant la navigation des pages. (à partir de la version 1.0.8)

Attention : un comportement étrange a été remarqué lorsque un des boutons submit du formulaire père du widget de pagination possède comme attribut name la valeur “submit”. La soumission javascript automatique générée par l'événement onchange renverra alors une erreur.

Méthodes

Cette objet fourint 3 méthodes pour changer dynamiquement les paramètres après que l'objet soit créé.

Change le nombre de résultat

Change la page sélectionnée

Change le nombre de ligne par page

Retours

Une fois l'objet instancié, il est possible de consulter son état par le biais des attributs suivants :

Remarque : debut et fin peuvent être utilisés dans la clause LIMIT lors d'une requete SQL (cf. exemple plus bas).

Exemples

Affichage d'un formulaire de navigation pour paginer une liste de 1000 éléments :

<?php
 
$params = array();
//$params['show_pages']  = false;
//$params['show_lignes'] = false;
$params['title'] = 'Ceci est un titre';
$params['lignes'] = 1000;
$obj1 = new Pxxo_Widget_Pagination($params);
 
echo $obj1->page."<br>"; // permet de récuperer la page courante
echo $obj1->pages."<br>"; // permet de récupérer le nombre de pages totale
echo $obj1->debut."<br>"; // permet de récupérer l'indice du premier element de notre page
echo $obj1->fin."<br>"; // permet de récupérer l'indice du dernier element de notre page
 
$obj1->main();
$obj1->dump();
 
?>

Supposons que l'on veuille naviguer à l'aide de ce widget dans le résultat d'une requete SQL :

<?php
 
// Connexion à la base de donnée (adaptez vos identifiants)
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
  or die('Could not connect: ' . mysql_error());
// On selectionne la bonne base de donnée sur laquelle on va lancer nos requetes
mysql_select_db('my_database') or die('Could not select database');
 
// On récupère le nombre totale d'éléments 
$query = mysql_query("SELECT COUNT(*) FROM matable");
$count = mysql_result($query, 0, 0);
 
$params = array();
$params['form_name'] = 'form1';
$params['form_enable'] = true;
$params['title'] = 'Ceci est un titre';
$params['lignes'] = $count; // on initialise notre widget avec le nombre de ligne totale que l'on souhaite présenter
$obj1 = new Pxxo_Widget_Pagination($params);
 
// On récupère maintenant le segment à afficher depuis les attributs 'debut' et 'fin' de notre widget
// Puis on construit la requetes SQL en se limitant à ces elements.
// Notez l'utilisation de la clause LIMIT qui permet de récupérer seulement la partie que l'on souhaite afficher
$sql = "SELECT * FROM matable LIMIT ".$obj1->debut.",".($obj1->fin-$obj1->debut).";";
$query = mysql_query($sql);
 
// On affiche le résultat de notre requete
while($row = mysql_fetch_array($query))
{
  print_r( $row );
}
 
// Puis on affiche notre widget
$obj1->main();
$obj1->dump();
 
?>