PEAR::Pager tuto paginer le résultat venant d'un db méthode 1
À 08:32 dans la rubrique PHP / PEAR
←
/ #775
/ rss
/ →
PEAR:: Pager est écrit dans le but de paginer des tableaux. Bien que vous puissiez récupérer tous les enregistrements d'une base de données, de les stocker dans un tableau et de les transmettre aux Pager, cette méthode n'est pas particulièrement efficace.
Si vous avez des résultats un tant soit peu imposants, ce n'est pas du tout éfficace .
Il doit y avoir une meilleure façon!
En fait, il y a ...
la méthode #1
Traduction d'une série d'articles de Lorenzo Alberton
La première méthode utilise Pager seulement pour créer des liens, et vous permettent de récupérer les enregistrement pertinents.
Plutôt que de transmettre le tableau de données à paginer Pager, vous venez juste de passer le nombre d'enregistrements.
Dans l'exemple suivant, nous allons récupérer les enregistrements d'une table contenant certains produits.
PEAR::MDB2 DBAL est utilisée ici, but how you fetch the records isn't relevant.
[php]
<?php
require_once 'Pager/Pager.php';
require_once 'MDB2.php';
// on saute le code de connection
// Supposons que nous disposons d'une connexion valable dans $db.
//d'abord on utilise pager pour créer les liens
$num_products = $db->queryOne('SELECT COUNT(*) FROM products');
$pager_options = array(
'mode' => 'Sliding',
'perPage' => 10,
'delta' => 2,
'totalItems' => $num_products,
);
$pager = Pager::factory($pager_options);
//ensuite on récupère les enregistrements pertinents pour la page courrante
list($from, $to) = $pager->getOffsetByPageId();
//set the OFFSET and LIMIT clauses for the following query
$db->setLimit($pager_options['perPage'], $from - 1);
$query = 'SELECT prod_name, prod_description FROM products';
$products = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
//show the results
echo '<ul>';
foreach ($products as $product) {
echo '<li>'.$product['prod_name'].': '.$product['prod_description'].'</li>';
}
echo '</ul>';
//show the links
echo $pager->links;
?>
Bien que cette méthode soit acceptable, il faut quand même beaucoup de code.








Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire