Comment paginer les résultats avec db_query
in Drupal 7? Je n'ai trouvé aucun exemple utilisant db_query
.
db_select()
est la voie à suivre en utilisant un soi-disant extenseur de requête. Voici un exemple simple:
$query = db_select('node', 'n')
->condition('type', 'article')
->extend('PagerDefault')
->limit(10);
theme_pager()
peut alors être utilisé pour sortir un pager.
Trouvez plus de détails sur ce drupal.org exemple de travail
Le code suivant fonctionne correctement pour moi.
$limit = 10;
$start = isset($_REQUEST['page']) ? $_REQUEST['page'] * $limit : 0;
$query = "<your query>";
$count_query = "<count query>";//count(*) AS total
$count_result = db_query($count_query);
$query_items = db_query_range($query,$start,$limit);
$items = $query_items->fetchAll();
pager_default_initialize($count_result->total, $limit, $element = 0);
$pager = theme('pager',array("quantity"=>5));
return theme("<page-theme>",array("items"=>$items ,"pager"=>$pager));
Cela a fonctionné pour moi:
// $list is the list of items you are paging through
$list = array('Cat', 'Dog', 'Mouse', 'Horse', 'Pony', 'Winged mongoose');
$per_page = 2;
// Initialise the pager
$current_page = pager_default_initialize(count($list), $per_page);
// Split your list into page sized chunks
$chunks = array_chunk($list, $per_page, TRUE);
// Show the pager
print theme('pager', array('quantity', count($list)));
// Show the appropriate items from the list
print theme('item_list', array(
'items' => $chunks[$current_page],
));