Какую наилучшую практику следует соблюдать при создании очень гибкой таблицы HTML? - PullRequest
0 голосов
/ 15 марта 2011

У меня есть одна большая таблица (с табличными данными), запрошенная из таблицы MySQL. Каждый столбец можно сортировать. Все столбцы, кроме одного, являются необязательными (пользователи могут щелкать по отображаемым столбцам), а разные столбцы можно фильтровать по разным условиям поиска (еще больше отфильтровывайте результаты поиска).

Мне было интересно, есть ли способ создать такую ​​таблицу, или я должен буду реализовать ее с нуля.

Если я собираюсь реализовать это с нуля, посоветуйте мне.

Настоящим обломом является то, что я не могу использовать JavaScript.

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Поскольку вы, похоже, используете CodeIgniter, проверили ли вы класс таблиц?

http://codeigniter.com/user_guide/libraries/table.html

1 голос
/ 15 марта 2011

Это, кажется, простая задача, поэтому я бы сделал ее с нуля (на самом деле я недавно делал похожую задачу).

Кажется, что самая раздражающая часть - избегать JavaScript, так какочень удобно показывать формы для фильтрации столбцов с помощью JavaScript.Хотя это единственное место, где я бы использовал JavaScript, если не нужно редактировать данные или открывать их в событии onClick строки.Все остальные вещи можно легко сделать с помощью простого HTML / PHP / SQL.


Функция, которая может быть полезна для генерации URL:

/**
 * Returns URL with modifications based on $params.
 *
 * To remove parameter from URL, specify NULL as it's value.
 *
 * @param array $params
 * @param bool  $leaveUnescaped
 */
function modifyURL(array $params = null, $leaveUnescaped = false) {
    $url = '?' . http_build_query(array_merge($_GET, (array)$params));
    if ( !$leaveUnescaped ) {
        $url = html($url);
    }
    return $url;
}

Возможное использование:

<tr>
    <th><a href='<?php echo modifyURL(array('sort_field' => 'id')); ?>'>ID</a></th>
    <th><a href='<?php echo modifyURL(array('sort_field' => 'name')); ?>'>Name</a></th>
</tr>

Это также хорошо для создания пагинационных ссылок, т. Е. modifyURL(array('page' => $page)) или просто modifyURL(compact('page')) в цикле.


Для отображения формы для фильтрации столбцов вы можете использовать URL modifyURL(array('filter_column' => 'name')).При создании таблицы проверьте, является ли isset($_GET['filter_column']) истиной.Если да и если $_GET['filter_column'] содержит правильное имя столбца, распечатайте форму для фильтрации соответствующего столбца.

Возможно, вам понадобится несколько типов форм фильтрации - один для строк (одно текстовое поле), другой для дат (минимальная дата, максимальная дата), одна для чисел (минимальное число, максимальное количество).Вам также может понадобиться форма фильтрации для данных типа enum, например:

<select name='gender'>
    <option value='m'>male</option>
    <option value='f'>female</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...