it-swarm.it

Come si creano tabelle ordinabili con un cercapersone con i dati di una tabella personalizzata?

Per Drupal 6 potresti fare qualcosa del genere:

$header = array(
  array('data' => t('Order id'), 'field' => 'order_id'),
  ...
  array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);
$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25;
$result = pager_query($sql, $limit);
...

Ho dato un'occhiata e per drupal 7 ed entrambi pager_query e tablesort_sql ora non c'è più. Sembra invece che la classe PagerDefault possa essere utilizzata per creare una query di cercapersone tramite DBTNG. Non sono stato in grado di trovare alcun indizio su una semplice API per allegare una tabella ordinabile alla query come è fatto in Drupal 6.

Quindi, come si crea una tabella ordinabile con un cercapersone che estrae i dati da una tabella personalizzata?

20
googletorp

Usi i cosiddetti extender. Nel tuo caso, il codice sarebbe simile al seguente.

$header = array(
  array('data' => t('Order id'), 'field' => 'order_id'),
  // ...
  array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);

// Initialize $query with db_select().
$query = db_select('your table name');

// Add the fields you need to query.
// ... 

// Add the table sort extender.
$query = $query->extend('TableSort')->orderByHeader($header);

// Add the pager.
$query = $query->extend('PagerDefault')->limit(25);
$result = $query->execute();

Vedi HowTo: Converti un modulo in DBTNG , Query dinamiche: ordinamento delle tabelle e Extender .

8
Berdir

Utilizzare gli extender TableSort e PagerDefault.

$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));

$table_sort = $query->extend('TableSort') // Add table sort extender.
  ->orderByHeader($header); // Add order by headers.

$pager = $table_sort->extend('PagerDefault')
  ->limit(5); // 5 rows per page.

$result = $pager->execute();
6
Serjas

Utilizzare il modulo DataTables .

Il modulo DataTables integra il plug-in jQuery DataTables in Drupal come stile di visualizzazione e funzione tema richiamabile. DataTables consente di aggiungere funzionalità dinamiche alle tabelle, tra cui:

  • Impaginazione a lunghezza variabile
  • Filtro al volo
  • Ordinamento con rilevamento del tipo di dati
  • Gestione intelligente delle larghezze delle colonne
  • Temabile da CSS
  • E molto altro ancora ...
2
Satya

Puoi semplicemente includere lo stesso Drupal 6 tablesort_sql nel tuo codice e funziona bene.

Per cercapersone:

$count = <Total No. of Table rows>

$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25; //Pager limit

$results = db_query( $sql );
$rows = array();
//Loop through the result.
while ( $row = $results->fetchAssoc() ) {
$rows = <Get your array values for Table row>
}
$current_page = pager_default_initialize($count, $limit);
$chunks = array_chunk($rows,$limit, TRUE);
$output = theme( 'table', array( 'header' => $headers, 'rows' => $chunks[$current_page] ) );
$output .= theme( 'pager', array('quantity',$count ) );
print $output;
0
Paulraj