动态获取数据表中$Columns数组中的列名

2023-12-04

首先我会提到我想要实现的目标。我正在使用 PHP 的 CodeIgniter 框架。我的数据库中有 5 个表,我想通过单击显示页面上的按钮以数据表格式显示它们。我使用服务器端处理 php 作为数据源。因此,一开始我编写了仅以数据表格式显示一个表的代码,并且成功了。现在我想在按钮单击事件中一次显示 5 个表格。但 $aColumns 长度应等于 HTML 表中定义的列数。现在考虑分数表,它有 4 列student_id、exam_id、subject_id 和marks_achieved。现在另一个表是branch,有2 列,只有branch_id 和branch_name。所以我无法动态增加或减少 HTML 中的标签,所以我很困惑。 我也在用这个source创建数据表。 你可以检查我的 getTable() 函数here.

jQuery:

$(document).ready(function()
{
$('#datatable').dataTable({
    "sPaginationType":"full_numbers",
    "bJQueryUI":true,
    "bProcessing": true,
    "bServerSide": true,
    "sServerMethod": "GET",
    "sAjaxSource": "datatable/getTable",
    "iDisplayStart": 0,
    "iDisplayLength": 10,
    "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
    "aaSorting": [[0, 'asc']],
    "aoColumns": [
        { "bVisible": true, "bSearchable": true, "bSortable": true },
        { "bVisible": true, "bSearchable": true, "bSortable": true },
        { "bVisible": true, "bSearchable": true, "bSortable": true },
        { "bVisible": true, "bSearchable": true, "bSortable": true }
        ]
})

$('input[type=button]').bind('click', function(){
        var param = $(this).attr('id');
            data = param + '=1';

        $.ajax({
            type: 'POST',
            url: 'datatable', 
            data: data                
        }).done(function( data ) { 
            console.log(data);
            $('#display_area').html(data); 
        });
    })
    });

HTML:

<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="../js/javascript.js"></script>
<script type="text/javascript" src="../js/jquery.dataTables.min.js"></script>
</head>
<body id="dt_example">
<form action="" method="post">
<input type="button" id="display_branch" name="display_branch" value="Display Branch Table" >
<input type="button" id="display_marks" name="display_marks" value="Display Marks Table" >
</form>   
<div id="container">
<div id="demo">
<table id="datatable" cellpadding="0" cellspacing="0" border="0" width="100%">
<thead>
    <tr>
        <th>Student ID</th>
        <th>Exam ID</th>
        <th>Subject ID</th>
        <th>Marks Achieved</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</tbody>
<tfoot></tfoot>
</table>
</div>
<div class="spacer"></div>
</div>
</body>
</html>

为了动态获取列,我在 datatable.php 中进行了如下更改,但它不起作用。这里出了什么问题还是我应该尝试其他方法?

   if(isset($_POST['display_marks']))
    {
        $aColumns = array('student_id', 'exam_id', 'subject_id', 'marks_achieved');
        $sTable = 'marks';
    }
    if(isset($_POST['display_branch']))
    {
        $aColumns = array('branch_id', 'branch_name');
        $sTable = 'branch';
    }

EDIT:user1190992 发布的解决方案有效,但整个方法发生了变化。我想清理列的标题。显示“branch_id”,而不是我想显示分支 ID。我怎样才能进行这种消毒?


这是一种从 JSON 数据动态创建 HTML 的非常简单的方法。但它不使用服务器端处理。

JavaScript

$(document).ready(function() {
    $(".abutton").click(function() {
        $('#myDatatable_wrapper').detach(); //Remove existing table
        var table = '<table id="myDatatable" class="table"><thead><tr>';
        $.ajax({
            url: 'dt.php',
            data: "table_id="+$(this).attr("id"),
            type: "POST",
            success: function (data) {
                $.each(data.aoColumns, function(key, value) {
                    table += "<th>"+value+"</th>";
                });
                table += "</tr></thead><tbody>";
                $.each(data.aaData, function(key, row) {
                    table += "<tr>";
                    $.each(row, function(key, fieldValue) {
                        table += "<td>"+fieldValue+"</td>";
                    });
                    table += "</tr>";
                });
                table += '<tbody></table>';
                $('.container').html(table);
                $('#myDatatable').dataTable();
            },
            dataType: "json"
        });
    });
});

PHP

$table_id = filter_input(INPUT_POST, "table_id", FILTER_SANITIZE_STRING);
$dbconn = mysqli_connect("localhost", "username", "password");

if($table_id == "table1") {
    $sql_query = mysqli_query($dbconn, 'SELECT * FROM display_branch');
}
else {
    $sql_query = mysqli_query($dbconn, 'SELECT * FROM display_marks');
}

if(mysqli_num_rows($sql_query) == 0) {
    echo "Check your ID";
    exit(1);
}
$data = array();
$data['aaData'] = array();
while($row = mysqli_fetch_assoc($sql_query)) {
    $data['aaData'][] = $row;
}

$data['aoColumns'] = array();
while($finfo = mysqli_fetch_field($sql_query)) {
    $data['aoColumns'][] = $finfo->name;
}
echo json_encode($data);

HTML

<button id="table1" class="abutton">Table 1</button><br /><button id="table2" class="abutton">Table 2</button>
<div class="container"></div>

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态获取数据表中$Columns数组中的列名 的相关文章

  • 如何在 Laravel 5.5 中编辑“页面因不活动而已过期”的视图

    在 Laravel 5 5 中 当您使用 CSRF 保护 默认情况下 并且在长时间不活动后发送发布请求时 您将收到此错误页面 屏幕截图 我对此错误表示同意 但是 我需要更改此错误的视图 文本以确保与我的应用程序风格和语言相匹配 关于如何编辑
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • xdebug_start_trace 行为异常

    我正在尝试进一步减少脚本内存使用量 我试图让我的脚本使用 xdebug 生成输出来分析内存使用情况 这是一个基于 CLI 的脚本 有 shebang usr local bin php q 我向它传递一个参数并检查它 argc gt 1 i
  • PHP 警告 ZipArchive::extractTo():权限被拒绝

    我创建了一个应用程序 它使用 ZipArchive 类 php 中的标准 中的方法 extractTo 并在 Windows 7 上的本地主机 apache 服务器上对其进行了测试 没有任何问题 但是当我在一些unix生产服务器上尝试过它之
  • 将 SQL 中的数据存储在数组中

    我正在尝试将 sql 数据库中的数据存储到数组中 目前我有这个 query mysql query SELECT FROM InspEmail WHERE Company LIKE company while row mysql fetch
  • Mysql - 如何比较两个 Json 对象?

    将整个 MySql json 列与 json 对象进行比较的语法是什么 以下不起作用 select count criteria from my alerts where criteria industries 1 locations 1
  • 适用于 Windows 的 PHP 支持的 GUI 应用程序

    我知道 PHP 是一种解释性语言 对于基于 Web 的事物来说 不是为在实际操作系统上运行 GUI 应用程序而设计的 但是有没有办法呢 基本上 是否有一个框架 系统允许我创建 本机 基本上是二进制文件 exe 看起来像带有本机控件和所有内容
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 疯狂的 crond 行为。不断使 bash 进程失效

    我有一个看起来像这样的 crontab SHELL bin bash PATH sbin bin usr sbin usr bin MAILTO root HOME 0 59 var www html private fivemin zda
  • 将秒转换为天、小时、分钟和秒

    我想转换一个变量 uptime这是秒 分为天 小时 分钟和秒 Example uptime 1640467 结果应该是 18 days 23 hours 41 minutes 这可以通过以下方式实现DateTime http php net
  • 如何覆盖 phpunit 中导出的变量?

    我知道我可以设置环境变量 https phpunit de manual current en appendixes configuration html在我的 phpunit xml 里面
  • php,in_array,0值

    我试图理解in array下一个场景的行为 arr array 2 gt Bye 52 77 3 gt Hey var dump in array 0 arr 返回值in array 是布尔值true 正如你所看到的no值等于0 所以有人可
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • 转换MAC地址格式

    我刚刚编写了一个小脚本 从交换机中提取数百个 MAC 地址进行比较 但它们的格式为 0025 9073 3014 而不是标准的 00 25 90 73 30 14 我对如何转换它感到困惑 我能想到的最好的办法就是在 处将它们分解成碎片 然后
  • sqlsrv_num_rows 不返回任何值

    我正在尝试获取查询中返回的行数 while 循环遍历结果有效 但由于某种原因 sqlsrv num rows 不返回任何值 result SELECT from dtable WHERE id2 apple query sqlsrv que
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • 保存 dat.gui 预设以动态添加控件?

    我正在向 dat gui 界面动态添加控件 但 保存设置 功能无法识别它们 var mygui new dat GUI mygui remember mygui standard way of adding a control mygui
  • Laravel 5 注销特定用户

    在我的 laravel 5 应用程序中 有一个功能允许具有管理员角色的用户重置非管理员的任何人的密码 但这不会强制该人注销并再次登录 更改密码后如何强制用户注销 我没有对用于验证用户身份或任何内容的中间件进行任何更改 我不知道它是否有效 但
  • 处理查询字符串参数时 Codeigniter 缓存问题

    问候 我正在编写一个 CI Web 应用程序 它实现标准文件缓存功能 如下所示 this gt output gt cache n 我使用了段和查询字符串参数的组合 因此似乎遇到了问题 我在用例和输出类代码中看到的是 缓存仅基于段 像这样

随机推荐

  • 可以按模型中的属性进行排序吗?

    可以按模型中的属性进行订购吗 class PlayerModel Base tablename players alliances id Column Integer ForeignKey alliances id nullable Tru
  • 如何传递凭据来重命名命令?

    我在 PowerShell 脚本中运行以下命令来简单地重命名计算机 该脚本将由计算机启动脚本 GPO 执行 因此我需要在命令中传递凭据 由于我无法看到脚本在启动时执行时发生了什么 因此我通过以普通用户身份登录时运行脚本来测试它 Get Wm
  • 如何在 PyQt5 GUI 中运行两个无限循环?

    我正在尝试使用 pyqt5 构建 GUI 在 GUI 中 我需要通过 WiFi 从树莓派摄像头传输视频 我需要将游戏手柄输入发送到树莓派 我的代码如下 import sys time math import cv2 import numpy
  • 在 64 位 x 64 位乘法中使用 Karasuba 算法真的有效吗?

    我在 AVX2 上工作 需要计算 64 位 x64 位 gt 128 位加宽乘法 并以最快的方式获得 64 位高位部分 既然AVX2没有这样的指令 那么我使用Karatsuba算法来提高效率和获得速度是否合理 不会 在现代架构中 Karat
  • 当结果错误时从函数返回默认值

    有没有类似的东西 当出现错误时 该快捷方式不是返回函数的结果 而是返回预定义的值 基本上我想知道是否可以在一行中执行以下操作 fn index gt String let temp some func pass some func retu
  • 在 Java 桌面应用程序中打开 PDF

    是否可以像创建文本文件一样在 Java 桌面应用程序中打开或创建 PDF 文件 从我的搜索中我发现只有使用 web java 才有可能 真的吗 要在桌面默认阅读器中打开现有的 PDF 文件 您可以使用以下代码 File pdf new Fi
  • 使用具有两个表的 SQL 视图在 MS-Access 表单上编辑数据的任何方法

    根据我的阅读 如果要修改的数据仅代表一个表并且数据中包含唯一标识符字段 则应该可以编辑视图描述的数据 据微软称 任何修改都必须仅引用一个基表中的列 当底层记录集基于视图或存储过程合并来自两个表的数据时 是否有人有幸创建了可编辑的 MS Ac
  • AES-256 CBC 在 php 中加密并在 Java 中解密,反之亦然

    JAVA import javax crypto Cipher import javax crypto spec IvParameterSpec import javax crypto spec SecretKeySpec import o
  • 用户定义的 Markdown 中的 Vue 组件

    我需要在由 Markdown 渲染插件生成的 HTML 中实例化零个或多个 Vue 组件 每个组件的数量和属性都在 markdown 中定义 我控制 markdown 插件 instead of normal template syntax
  • 为什么 req.cookies.session 未定义? Firebase + Node + Express

    我正在尝试分配一个生成会话 cookie 以换取提供的 ID 令牌 Here是我正在关注的文档 这是我的客户端登录代码 firebase auth signInWithEmailAndPassword email password then
  • 使用正则表达式从 CSV 中删除多余的引号字符

    我有大量使用双引号作为条目分隔符的 CSV 文件 但某些条目具有相同的字符 如下所示 MAIN 8 PIPE PART B Report 7 我试图匹配额外的 字符 以便我可以将其替换为另一个字符以在文件中读取 我尝试使用正则表达式 但很符
  • 等值区域图未显示输出中的颜色变化

    即使在等值线统计图与geo data和数据框与 data 参数链接等值线图 method 我已经提供了 key on 参数正确并且 列 参数正确 我已从数据框中删除了所有 NULL 值 import pandas as pd from pa
  • 阻止滥用机器人爬行?

    这是一个好主意吗 http browsers garykeith com stream asp RobotsTXT 滥用爬行是什么意思 这对我的网站有什么坏处 并不真地 无论如何 大多数 坏机器人 都会忽略 robots txt 文件 滥用
  • Ftplib ConnectionRefusedError:[Errno 111]连接被拒绝(python 3.5)

    我有一个应该连接到 FTP 的脚本 from ftplib import FTP with FTP IP as ftp ftp login user my user passwd my password ftp cwd MY DIR ftp
  • 搜索小部件,空指针?

    您好 在我的应用程序中实现搜索小部件时遇到问题 它似乎无法找到菜单项的 actionview 但它找到该项目就好了 我四处寻找答案 但没有看到明确的解决方案 这是我在 XML 中声明的菜单 menu menu
  • 如何在设计视图中打开Java窗体?

    我在互联网上找到了这段代码 我正在我的新笔记本电脑上设置一个新的 Eclipse 我希望能够在设计视图中打开它 如何在设计视图中打开带有 JComponents 的类 是否有办法将其设为默认值 看起来很简单 但我一直在 Eclipse 中寻
  • 多CPU、多核、超线程有什么区别?

    谁能向我解释一下多CPU 多核和超线程之间的区别 我总是对这些差异以及不同场景下每种架构的优缺点感到困惑 这是我在网上学习和参考别人的评论后目前的理解 我认为超线程是其中最劣质的技术 但是便宜 其主要思想是重复寄存器以节省上下文切换时间 多
  • sqlite 按总和过滤

    我有一个包含 1000 条记录的数据库 每行包含文件名和文件大小 如果所有文件大小的总和超过特定限制 则 我需要创建一个 sql 查询来删除所有剩余的行 从最旧到最新 有什么建议么 谢谢 假设这样创建了一个表 CREATE TABLE Fi
  • 在 csv 中写入数据帧时,“‘EncodeElement’中未实现类型‘列表’”

    我有下面的数据框 df Place Name Places abc delhi bcd mumbai delhi cde chennai hyderabad delhi def mumbai efg bangalore mumbai ghi
  • 动态获取数据表中$Columns数组中的列名

    首先我会提到我想要实现的目标 我正在使用 PHP 的 CodeIgniter 框架 我的数据库中有 5 个表 我想通过单击显示页面上的按钮以数据表格式显示它们 我使用服务器端处理 php 作为数据源 因此 一开始我编写了仅以数据表格式显示一