Вывод html таблицы с данными из бд, сортировкой и пагинацией

Таблица с сортировкой и пагинатором

Код с комментариями ниже.

/**
 * Реализация hook_menu()
 */
function mymodule_menu()
{
    $items['table-test'] = array(
        'title' => 'Table',
        'page callback' => 'mymodule_show_table',
        'access arguments' => array('access content'),
        'type' => MENU_CALLBACK,
    );
 
    return $items;
}
 
/**
 * Menu callback для url "table-test"
 */
function mymodule_show_table()
{
    $perpage = 10; // строк на страницу
    $rows = array();
 
    // описание колонок
    $header = array(
        array('data' => 'ID',        'field' => 'nid'),
        array('data' => 'Тип',       'field' => 'type'),
        array('data' => 'Заголовок', 'field' => 'title'),
    );
 
    $result = pager_query("SELECT nid, type, title FROM {node} WHERE status = 1" . tablesort_sql($header), $perpage);
 
    while ($row = db_fetch_array($result))
    {
        $rows[] = $row;  
    }
 
    $output  = theme('table', $header, $rows);    // Получаем html код таблицы
    $output .= theme('pager', NULL, $perpage, 0); // Получаем html код пагинатора
 
    return $output;
}

Если запрос, передаваемый в pager_query, содержит группировку GROUP BY, вычисляемое поле COUNT или просто сложен, то четвёртым параметром нужно передать ещё один запрос для получения количества записей. Пример:

$result = pager_query(
    "SELECT nid, type, title FROM {node} WHERE status = 1" . tablesort_sql($header),
    $perpage,
    0,
    "SELECT COUNT(*) FROM {node} WHERE status = 1"
);

Написанное актуально для
Drupal 6.x
Теги:
работа с бд
Добавлено: 22 Июля 2018 10:16:54 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...