PEAR::Pager tutorials : Pager_Wrapper et Ajax
À 10:50 dans la rubrique PHP / PEAR
←
/ #840
/ rss
/ →
Je pense avoir déjà parlé de tous les cas de figure que vous pourriez rencontrer où il est utile d'utiliser PEAR::Pager, mais j'ai reçu de nombreux mails me demander comment utiliser le pager pour faire ceci ou cela.
Les 2 questions les plus récurrentes sont
a) Comment je peux utiliser Pager avec _moteur_de_template_ ?
et
b) Comment je peux utiliser Pager_Wrapper avec AJAX?"
En espérant réduire le flot de mails, je vais présenter 2 exemples complets.
La première à trouvé réponse ici : PEAR::Pager tutorials : Pager and Smarty
Pager_Wrapper and AJAX
Ce second exemple montre comment utiliser Pager_Wrapper pour paginer les données d'une DB et utiliser HTML_AJAX pour les afficher.
Ce texte est une des traductions d'une série d'articles de Lorenzo Alberton
Le fichier html est identique que celui montré dans le tutorial Pager + AJAX :
[html]
<html>
<body>
<h1>Exemple de PEAR::Pager avec AJAX</h1>
<script type="text/javascript" src="server.php?client=all"></script>
<div id="cible_dont_on_modifie_le_contenu">Je suis là cible</div>
<script type="text/javascript">
HTML_AJAX.replace('cible_dont_on_modifie_le_contenu', 'testdata.php');
</script>
</body>
</html>
Le fichier testdata.php est un simple script qui récupère des données dans une base de donnée à l'aide de Pager_Wrapper.
L'affichage de ce script va remplacer le contenu du div dans le premier fichier html.
Nous ajoutons aussi la date courante pour prouver qu'on affiche des données "fraîche" et qu'on reconstruit le contenu à chaque appel (C'est à dire à chaque fois qu'on clique sur un lien de navigation)
[php]
<?php
//le fichier Pager_Wrapper a été placé où on peut l'inclure
require_once 'Pager_Wrapper.php';
require_once 'MDB2.php';
//supposons qu'on a une connexion dans $db
$option_du_pager = array(
'mode' => 'Sliding',
'append' => false, //ne pas ajouter les paramètres GET aux url générées
'path' => '',
'fileName' => 'javascript:HTML_AJAX.replace(\'target\',\'testdata.php?pageID=%d\');', //Pager remplace "%d" par le n° de la page...
'perPage' => 10, //afficher 10 éléments par page
'delta' => 1,
'itemData' => $data,
);
$statement = 'SELECT prod_name, prod_description FROM products';
$paged_data = Pager_Wrapper_MDB2($db, $statement, $option_du_pager);
if (PEAR::isError($paged_data)) {
//Ouch 'y a un stuut, reglez le problème.
}
//affichage des résultats
echo '<p>Ce conteneur est récupéré par un appel AJAX</p>';
echo '<p><span class="datetime">DateTime: '. date('Y-m-d H:i:s') .'</span></p>';
echo '<h3>Page ' . $paged_data['page_numbers']['current'] . '/' . $paged_data['page_numbers']['total'] . '</h3>';
foreach ($paged_data['data'] as $item)
{
echo '<strong>' . $item['prod_name'] . '</strong>: ' . $item['prod_description'] . '<br />';
}
//Affichage des liens
echo '<hr />'.paged_data['links'];
?>
En fait vous pouvez observer que c'est le même exemple qu'ici
mais avec quelques petits changement repris d'ici.








Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire