Php 在jQuery数据表中按名称引用列
我正在使用DataTables,我希望能够通过名称而不是列号引用我的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 (
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();
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*在