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 :
| 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.
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
Une fois l'objet instancié, il est possible de consulter son état par le biais des attributs suivants :
debut : contient l'indice du premier element que l'on affiche dans la page courante (commence par 0)fin : contient l'indice du dernier element que l'on affiche dans la page courantepage : contient l'indice de la page courantepages : contient le nombre de page totales
Remarque : debut et fin peuvent être utilisés dans la clause LIMIT lors d'une requete SQL (cf. exemple plus bas).
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(); ?>