Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在jQuery数据表中按名称引用列_Php_Jquery_Datatables_Jquery Datatables - Fatal编程技术网

Php 在jQuery数据表中按名称引用列

Php 在jQuery数据表中按名称引用列,php,jquery,datatables,jquery-datatables,Php,Jquery,Datatables,Jquery Datatables,我正在使用DataTables,我希望能够通过名称而不是列号引用我的mData 当前我的请求如下所示: "aoColumns": [ { "mData": "0" }, { "mData": "1" }, { "mData": "4" }, { "mData": "12" }, ], [aaData] => Array ( [0] => Array (

我正在使用DataTables,我希望能够通过名称而不是列号引用我的
mData

当前我的请求如下所示:

"aoColumns": [
    { "mData": "0" },
    { "mData": "1" },
    { "mData": "4" },
    { "mData": "12" },
],
[aaData] => Array
        (
            [0] => Array
                (
                    [0] => 12
                    [1] => Test Account
                    [2] => 38
                    [3] => 03/21/2015 )
$(document).ready(function() {
    $('#example').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "your_directory/your_php_file.php",
        "columns": [
            { "data": "id" },
            { "data": "name" },
            { "data": "Amount" },
            { "data": "Date" }        
        ]
    } );
} );
我希望能够以这种方式提出请求:

"aoColumns": [
        { "mData": "id" },
        { "mData": "name" },
        { "mData": "Amount" },
        { "mData": "Date" },
],
以下是我在PHP代码中的专栏:

$aColumns = array( 'id','name','Amount','Date');
我的
JSON
如下所示:

"aoColumns": [
    { "mData": "0" },
    { "mData": "1" },
    { "mData": "4" },
    { "mData": "12" },
],
[aaData] => Array
        (
            [0] => Array
                (
                    [0] => 12
                    [1] => Test Account
                    [2] => 38
                    [3] => 03/21/2015 )
$(document).ready(function() {
    $('#example').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "your_directory/your_php_file.php",
        "columns": [
            { "data": "id" },
            { "data": "name" },
            { "data": "Amount" },
            { "data": "Date" }        
        ]
    } );
} );

谢谢,欢迎您的任何意见。

这就是您想要实现的目标吗

"aoColumns": [
    <?php foreach($aColumns as $column):?>
        { "mData": "<?php echo $column;?>" },
    <?php endforeach;?>
],
“aoColumns”:[
{“mData”:“},
],

要使用名称而不是数字引用数据,您应该使用标准DataTables下载提供的SSP.class.php库(通过当前下载,您可以在
examples\server\u-side\scripts
中看到它。要使用此库,您需要在PHP中有一个关联数组。因此,您的PHP代码将从:

$aColumns = array( 'id','name','Amount','Date');
致:

db
是数据库中表的名称,
dt
是数据表中表的对应名称。它是一个映射

添加您的详细信息和参数,如下所示:

$table = 'your_table_in_database';

$primaryKey = 'id';

$sql_details = array(
    'user' => 'your_db_username',
    'pass' => 'your_db_password',
    'db'   => 'name_of_your_db',
    'host' => 'localhost_or_your_host'
);
然后使用DataTables提供的SSP类对其进行JSON编码:

require( 'ssp.class.php' );

echo json_encode(SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns));
然后,您将在DataTables初始化中引用这些列,如下所示:

"aoColumns": [
    { "mData": "0" },
    { "mData": "1" },
    { "mData": "4" },
    { "mData": "12" },
],
[aaData] => Array
        (
            [0] => Array
                (
                    [0] => 12
                    [1] => Test Account
                    [2] => 38
                    [3] => 03/21/2015 )
$(document).ready(function() {
    $('#example').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "your_directory/your_php_file.php",
        "columns": [
            { "data": "id" },
            { "data": "name" },
            { "data": "Amount" },
            { "data": "Date" }        
        ]
    } );
} );
如果您不想使用SSP,并且希望手动处理服务器端并替换JSON对象,那么您需要确保JSON对象中包含其他属性

您需要
draw
属性,该属性是每次加载页面时递增的绘图计数器。您还需要定义
recordsTotal
属性,它是记录总数,最后需要
recordsFiltered
属性,它是应用过滤器后的记录数(根据定义,等于或小于
recordsTotal

JSON结构的示例(来自DataTables示例):

使用SSP类作为参考,然后重新创建您自己的代码(这是不需要的,因为DataTables自己的服务器端数据处理示例使用SSP作为标准。正如下面提到的davidkonrad,不要重新发明轮子。)。我将在此处提供SSP类作为参考,但您可以在我上面提到的目录中找到它

ssp.class.php(看看
simple
method,让您开始学习):

/*
*用于构建DataTables服务器端处理SQL查询的助手函数
*
*此类中的静态函数只是帮助构建的辅助函数
*DataTables演示服务器端处理脚本中使用的SQL
*显然,函数并不代表服务器端可以完成的所有工作
*在处理过程中,它们故意简单地显示它是如何工作的。更复杂
*服务器端处理操作可能需要自定义脚本。
*
*看http://datatables.net/usage/server-side 有关服务器的详细信息,请参阅-
*数据表的端处理要求。
*
*@license-MIT-http://datatables.net/license_mit
*/
//删除此块-仅用于DataTables测试环境!
$file=$\u服务器['DOCUMENT\u ROOT']./datatables/mysql.php';
if(is_文件($file)){
包括($文件);
}
SSP类{
/**
*为DataTables行创建数据输出数组
*
*@param数组$columns列信息数组
*@param array$来自SQL get的数据
*@返回基于行格式的数组格式数据
*/
静态函数数据\输出($columns,$data)
{
$out=array();
对于($i=0,$ien=count($data);$i intval($request['draw']),
“recordsTotal”=>intval($recordsTotal),
“recordsFiltered”=>intval($recordsFiltered),
“data”=>self::data\u输出($columns,$data)
);
}
/**
*连接到数据库
*
*@param array$sql\u details sql server连接详细信息数组,带有
*特性:
**主机-主机名
**db-数据库名称
**用户名-用户名
**密码-用户密码
*@return资源数据库连接句柄
*/
静态函数sql\u connect($sql\u详细信息)
{
试一试{
$db=@新PDO(
“mysql:host={$sql\u详细信息['host']};dbname={$sql\u详细信息['db']}”,
$sql_详细信息['user'],
$sql_详细信息['pass'],
数组(PDO::ATTR_ERRMODE=>PDO::ERRMODE_异常)
);
}
捕获(PDO$e){
自我:致命的(
“连接到数据库时出错。”。
服务器报告的错误为:“..e->getMessage()
);
}
返回$db;
}
/**
*在数据库上执行SQL查询
*
*@param resource$db数据库处理程序
*@param array$bindings bind()中的PDO绑定值数组
*用于安全转义字符串。请注意,这可以作为
*如果不需要绑定,则为SQL查询字符串。
*@param string$sql要执行的查询。
*@return查询的数组结果(所有行)
*/
静态函数sql\u exec($db,$bindings,$sql=null)
{
//变元
如果($sql==null){
$sql=$bindings;
}
$stmt=$db->prepare($sql);
//echo$sql;
//绑定参数
if(is_数组($bindings)){
对于($i=0,$ien=count($bindings);$ibindValue($binding['key'],$binding['val'],$binding['type']);
}
}
//执行
试一试{
$stmt->execute();
}
捕获(PDO$e){
self::fatal(“发生SQL错误:”..e->getMessage());
}
//全部归还
返回$stmt->fetchAll();
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*在