php - 创建高度灵活的 HTML 表格时应遵循的最佳实践是什么?

标签 php html mysql codeigniter

我有一个从 MySQL 表查询的大表(包含表格数据)。每一列都是可排序的,除一列之外的所有列都是可选的(用户可以单击要显示的列),并且可以使用不同的搜索词过滤不同的列(进一步过滤掉搜索结果)。

我想知道是否已经有一种方法可以遵循创建这样的表,或者我是否必须从头开始实现它。

如果我要从头开始实现它,请给我建议。

真正的遗憾是我无法使用 JavaScript。

谢谢。

最佳答案

这似乎是一个容易做的任务,所以我会从头开始做(我最近实际上做了类似的任务)。

最令人恼火的部分似乎是避免使用 JavaScript,因为使用 JavaScript 显示用于过滤列的表单非常方便。不过,如果不需要编辑数据或在行的 onClick 事件上打开数据,那么这是我使用 JavaScript 的唯一地方。所有其他事情都可以使用纯 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']包含列的有效名称,用于过滤适当列的打印表单。

您可能需要多种类型的过滤表单 - 一种用于字符串(单个文本字段),一种用于日期(最小日期,最大日期),一种用于数字(最小数字,最大数字)。您可能还需要枚举类型数据的过滤表单,即:

<select name='gender'>
    <option value='m'>male</option>
    <option value='f'>female</option>
</select>

关于php - 创建高度灵活的 HTML 表格时应遵循的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308484/

相关文章:

php - 使用 PHP/MYSQL 需要使用 IN 条件插入到表中

mysql - 为什么从 python 调用 MySQL 会报告 SQL 错误?

python - Laravel symfony 进程超过 60 秒超时

javascript - 使用动态字段通过 AJAX/jQuery 检索数据库信息的问题

php - php 中的静态变量是否在请求中持续存在?

javascript - 仅在使用 javascript 和 html 的浏览器中在相同的两个选项卡之间切换

php - 如何选择所有条件为空的地方?

html - 如何在 svg 中引用 jpg?

javascript - 使用 JavaScript 将 HTML 内容附加到 div 的最快方法

php - MySQL "Or"条件