我刚刚创建了一个基于查询的数据表,并使用theme_table()成功地显示了它。
现在,我想在表格中添加一些过滤器,但不知道如何继续。
是否有内置功能允许我轻松完成此操作,还是应该手动添加表单并更新查询/每次用户选择时重新显示结果?
感谢您的帮助!
答案 0 :(得分:2)
我认为您想要使用pager_query和tablesort_sq l:它特别适用于创建具有分页和排序功能的数据表(并且主题通常主题为这样的表格,开箱即用)。 / p>
示例:
<?php
// The regular query without sorting or pagination parameters
$sql = 'SELECT cid, first_name, last_name, company, city FROM {clients}';
// Number of rows per page
$limit = 20;
// List of table columns ("field" is the matching database column from the sql query)
$header = array(
array('data' => t('Name'), 'field' => 'last_name', 'sort' => 'asc'),
array('data' => t('Company'), 'field' => 'company'),
array('data' => t('City'), 'field' => 'city')
);
// Calculates how to modify the SQL query according to the current pagination and sorting settings
// Then performs the database query
$tablesort = tablesort_sql($header);
$result = pager_query($sql . $tablesort, $limit);
$rows = array();
while ($client = db_fetch_object($result)) {
$rows[] = array(l($client->last_name.', '.$client->first_name, 'client/'.$client->cid), $client->company, $client->city);
}
// A message in case no results were found
if (!$rows) {
$rows[] = array(array('data' => t('No client accounts created yet.'), 'colspan' => 3));
}
// Then you can pass the data to the theme functions
$output .= theme('table', $header, $rows);
$output .= theme('pager', NULL, $limit, 0);
// And return the HTML output
print $output;
?>
(我添加了评论,但该示例的原始版本来自this page)
或者,如果您只是想创建一个显示数据列表的页面,您可能根本不需要创建模块,您可能更喜欢使用Views module。