web-dev-qa-db-fra.com

Comment paginer les résultats avec db_query?

Comment paginer les résultats avec db_query in Drupal 7? Je n'ai trouvé aucun exemple utilisant db_query.

6
Nima

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

8
balintk

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));
5
Paulson Peter

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],
  ));
0
Paulraj