在DataTable服务器端处理中调用函数
我是使用DataTable ServerSide处理的新手。在列数组中调用PHP函数让我感到困惑。
这是一个前端代码。
<table id="memListTable" class="display" style="width:100%">
<thead>
<tr>
<th>Request Date</th>
<th>District Name</th>
<th>Request Type</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Request Date</th>
<th>District</th>
<th>Request Type</th>
</tr>
</tfoot>
</table>
<script>
$(document).ready(function(){
$('#memListTable').DataTable({
"processing": true,
"serverSide": true,
"aaSorting": [[0,'desc']],
"ajax": "getData.php"
});
});
</script>
getData.php
<?php
$dbDetails = array(
'host' => '****',
'user' => '****',
'pass' => '****',
'db' => '****'
);
$table = 'requestss';
$primaryKey = 'id';
$columns = array(
array( 'db' => 'time_stamp', 'dt' => 0 ),
array( 'db' => 'dist_code', 'dt' => 1),
array( 'db' => 'req_type', 'dt' => 2 )
);
// Include SQL query processing class
require( 'ssp.class.php' );
// Output data as json format
echo json_encode(
SSP::simple( $_GET, $dbDetails, $table, $primaryKey, $columns )
);
这两个文件都产生了完美的结果。输出
我只想显示地区名称,而不是地区代码。我有一个用unctions.php编写的函数,该函数能够从数据库中获取地区名称。我只是在想,我必须在哪里调用这个函数。这是我在函数中编写的函数。php
function getDistrict($dist_code,$con)
{
$sql = "SELECT disname FROM districts WHERE discode=$dist_code";
$query = mysqli_query($con,$sql);
if($query)
{
while($row = mysqli_fetch_array($query))
{
return $value = $row['disname'];
}
}
}
实际上我不知道如何在$Column数组中调用此函数。请帮帮忙。提前感谢
解决方案
ssp.class.php
不支持JOIN
。但我们有一个解决方法:
解决方案1(使用子查询):
在$table
定义中使用子查询,将dist_code
替换为$columns
中的disname
,如下所示:
$dbDetails = [
'host' => '****',
'user' => '****',
'pass' => '****',
'db' => '****'
];
$table = '(SELECT r.*, d.disname FROM requestss r INNER JOIN districts d ON r.dist_code = d.discode) tbl';
$primaryKey = 'id';
$columns = [
[ 'db' => 'time_stamp', 'dt' => 0 ],
[ 'db' => 'disname', 'dt' => 1 ],
[ 'db' => 'req_type', 'dt' => 2 ]
];
// Include SQL query processing class
require( 'ssp.class.php' );
// Output data as json format
echo json_encode(
SSP::simple( $_GET, $dbDetails, $table, $primaryKey, $columns )
);
然后,您需要将`$table`
的所有实例替换为$table
以删除ssp.class.php
文件中的反号。
解决方案2(创建视图):
如果您不想编辑ssp.class.php
文件,可以在数据库中创建一个视图:
CREATE
VIEW requests_view
AS SELECT r.*, d.disname FROM requestss r INNER JOIN districts d ON r.dist_code = d.discode;
然后,使用requests_view
作为getData.php
文件中的$table
:
$dbDetails = [
'host' => '****',
'user' => '****',
'pass' => '****',
'db' => '****'
];
$table = 'requests_view';
$primaryKey = 'id';
$columns = [
[ 'db' => 'time_stamp', 'dt' => 0 ],
[ 'db' => 'disname', 'dt' => 1 ],
[ 'db' => 'req_type', 'dt' => 2 ]
];
// Include SQL query processing class
require( 'ssp.class.php' );
// Output data as json format
echo json_encode(
SSP::simple( $_GET, $dbDetails, $table, $primaryKey, $columns )
);
您还可以考虑使用支持JOIN
的Customized SSP Class For Datatables Library或Datatables library for PHP等第三方PHP库。
相关文章