过滤Drupal中的theme_table

时间:2010-11-05 00:53:24

标签: mysql drupal drupal-views drupal-modules

我刚刚创建了一个基于查询的数据表,并使用theme_table()成功地显示了它。

现在,我想在表格中添加一些过滤器,但不知道如何继续。

是否有内置功能允许我轻松完成此操作,还是应该手动添加表单并更新查询/每次用户选择时重新显示结果?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我认为您想要使用pager_querytablesort_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