आप कस्टम तालिका के डेटा के साथ पेजर के साथ छांटने योग्य टेबल कैसे बनाते हैं?


19

Drupal 6 के लिए आप कुछ इस तरह से कर सकते हैं:

$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);
...

मैंने एक नज़र रखी और ड्रुपल 7 और दोनों के लिए pager_queryऔर tablesort_sqlअब चला गया है। ऐसा लगता है कि इसके बजाय PagerDefaultकक्षा का उपयोग DBTNG का उपयोग करके पेजर क्वेरी बनाने के लिए किया जा सकता है। मैं एक साधारण एपीआई पर किसी भी तरह का सुराग खोजने में सक्षम नहीं था, जैसे कि यह ड्रुपल 6 में किया गया था।

तो आप कस्टम तालिका से डेटा खींचने वाले पेजर के साथ एक छांटने योग्य तालिका कैसे बनाते हैं?

जवाबों:


8

आप तथाकथित एक्सटेंडर का उपयोग करते हैं। आपके मामले में, कोड निम्नलिखित के समान होगा।

$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();

देखें HowTo: DBTNG करने के लिए एक मॉड्यूल कन्वर्ट , गतिशील प्रश्नों: टेबल छँटाई और Extenders


अपने आउटपुट में वास्तविक पेजर जोड़ना न भूलें: // बिल्ड टेबल। $ आउटपुट = थीम ('तालिका', सरणी ('हेडर' => $ हेडर, 'पंक्तियों' => $ पंक्तियों, 'खाली' => टी ('कोई तार उपलब्ध नहीं है'))); // पेजर जोड़ें। $ आउटपुट। = विषय ('पेजर');
कुबंनेर

6

TableSortऔर 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();

2

DataTables मॉड्यूल का उपयोग करें ।

डेटाटेबल्स मॉड्यूल एक दृश्य शैली और एक कॉल करने योग्य थीम फ़ंक्शन के रूप में जेपीयू प्लगइन डेटाटेबल्स को ड्रुपल में एकीकृत करता है। DataTables आपको तालिकाओं में गतिशील सुविधाएँ जोड़ने की सुविधा देता है, जिनमें शामिल हैं:

  • परिवर्तनीय लंबाई पृष्ठ पर अंक लगाना
  • ऑन-द-फ्लाई फ़िल्टरिंग
  • डेटा प्रकार का पता लगाने के साथ छंटनी
  • स्तंभ की चौड़ाई की स्मार्ट हैंडलिंग
  • सीएसएस द्वारा उपलब्ध करने योग्य
  • और आने के लिए ...

मैं डीबी एपीआई का हिस्सा है जो कुछ करने के लिए एक मॉड्यूल जोड़ने के खिलाफ सलाह देता हूं और कस्टम कोड के लगभग 50 या उससे कम लाइनों के साथ किया जा सकता है।
अगि हैमरथिफ़

0

आप अपने कोड में सिर्फ वही Drupal 6 tablesort_sql शामिल कर सकते हैं और यह ठीक काम करता है।

पेजर के लिए:

$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;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.