为了账号安全,请及时绑定邮箱和手机立即绑定

在 DataTable 服务器端处理中调用函数

在 DataTable 服务器端处理中调用函数

PHP
慕娘9325324 2022-07-22 10:04:59
我是使用 DataTable 服务器端处理的新手。我很困惑在 Columns 数组中调用 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>获取数据.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 classrequire( 'ssp.class.php' );// Output data as json formatecho json_encode(SSP::simple( $_GET, $dbDetails, $table, $primaryKey, $columns ));这两个文件都产生了完美的结果。输出 
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

ssp.class.php不支持JOIN. 但是我们有一个解决方法:


解决方案1(使用子查询):

在定义中使用子查询$table并替换dist_code为disnamein $columns,如下所示:


$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 )

);

然后,您需要替换 with 的所有实例`$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用作您的$tableingetData.php文件:


$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 )

);

您还可以考虑使用第三方 PHP 库,例如自定义 SSP 类用于数据表库或用于 PHP的支持JOINs 的数据表库。


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信