PHPdatatable服务器端处理(1)
来源:互联网 发布:爱淘宝红包不中 编辑:程序博客网 时间:2024/04/30 20:53
发送参数(Sent parameters)
当使用服务器处理时,Datatables会发送如下数据给服务器
名称
类型
描述
draw
integerJS
请求次数计数器,每次发送给服务器后又原封返回,因为请求是异步的为了确保每次请求能对应到服务器返回的数据,假设你请求的是第一页的数据收到的却是第二页的,这样就乱套了 (这是我对draw的理解,如果有不同理解的可以告知)
start
integerJS
第一条数据的起始位置,比如0代表第一条数据
length
integerJS
告诉服务器每页显示的条数,这个数字会等于返回的记录数,可能会大于因为服务器可能没有那么多数据。这个也可能是-1,代表需要返回全部数据(尽管这个和服务器处理的理念有点违背)
search[value]
stringJS
全局的搜索条件,针对于每一列( searchable需要设置为 true )
search[regex]
booleanJS
如果为 true代表全局搜索的值是作为正则表达式处理,为 false则不是。 注意:通常在服务器模式下对于大数据不执行这样的正则表达式,但这都是自己决定的
order[i][column]
integerJS
i是一个数组索引,对应的是 columns,从0开始,次参数表示那一列需要排序
order[i][dir]
stringJS
上面确定了是那一列,这个确定对应的列是什么样的排序方式 desc 是降序 asc升序
columns[i][data]
stringJS
columns 绑定的数据源,由columns.dataDT定义
columns[i][name]
stringJS
columns.nameDT里定义的名称
columns[i][searchable]
booleanJS
标记列是否能被搜索 为 true代表可以,否则不可以,这个是由 columns.searchableDT控制
columns[i][orderable]
booleanJS
标记列是否能排序 为 true代表可以,否则不可以,这个是由 columns.orderableDT控制
columns[i][search][value]
stringJS
特定列的搜索条件
columns[i][search][regex]
booleanJS
特定列的搜索条件是否视为正则表达式
<?php
//获取Datatables发送的参数 必要
$draw = $_GET['draw'];//这个值作者会直接返回给前台
//排序
$order_column = $_GET['order']['0']['column'];//那一列排序,从0开始
$order_dir = $_GET['order']['0']['dir'];//ase desc 升序或者降序
//拼接排序sql
$orderSql = "";
if(isset($order_column)){
$i = intval($order_column);
switch($i){
case 0;$orderSql = " order by first_name ".$order_dir;break;
case 1;$orderSql = " order by last_name ".$order_dir;break;
case 2;$orderSql = " order by position ".$order_dir;break;
case 3;$orderSql = " order by office ".$order_dir;break;
case 4;$orderSql = " order by start_date ".$order_dir;break;
case 5;$orderSql = " order by salary ".$order_dir;break;
default;$orderSql = '';
}
}
//搜索
$search = $_GET['search']['value'];//获取前台传过来的过滤条件
//分页
$start = $_GET['start'];//从多少开始
$length = $_GET['length'];//数据长度
$limitSql = '';
$limitFlag = isset($_GET['start']) && $length != -1 ;
if ($limitFlag ) {
$limitSql = " LIMIT".intval($start).", ".intval($length);
}
//定义查询数据总记录数sql
$sumSql = "SELECT count(id) as sum FROMDATATABLES_DEMO";
//条件过滤后记录数 必要
$recordsFiltered = 0;
//表的总记录数 必要
$recordsTotal = 0;
$recordsTotalResult = $db->query($sumSql);
while ($row =$recordsTotalResult->fetchArray(SQLITE3_ASSOC)) {
$recordsTotal = $row['sum'];
}
//定义过滤条件查询过滤后的记录数sql
$sumSqlWhere =" wherefirst_name||last_name||position||office||start_date||salary LIKE'%".$search."%'";
if(strlen($search)>0){
$recordsFilteredResult =$db->query($sumSql.$sumSqlWhere);
while ($row =$recordsFilteredResult->fetchArray(SQLITE3_ASSOC)) {
$recordsFiltered = $row['sum'];
}
}else{
$recordsFiltered = $recordsTotal;
}
//query data
$totalResultSql = "SELECT first_name,last_name,position,office,start_date,salaryFROM DATATABLES_DEMO";
$infos = array();
if(strlen($search)>0){
//如果有搜索条件,按条件过滤找出记录
$dataResult =$db->query($totalResultSql.$sumSqlWhere.$orderSql.$limitSql);
while ($row =$dataResult->fetchArray(SQLITE3_ASSOC)) {
$obj = array($row['first_name'], $row['last_name'], $row['position'],$row['office'], $row['start_date'], $row['salary']);
array_push($infos,$obj);
}
}else{
//直接查询所有记录
$dataResult =$db->query($totalResultSql.$orderSql.$limitSql);
while ($row =$dataResult->fetchArray(SQLITE3_ASSOC)) {
$obj = array($row['first_name'], $row['last_name'],$row['position'],$row['office'], $row['start_date'], $row['salary']);
array_push($infos,$obj);
}
}
/*
* Output 包含的是必要的
*/
echo json_encode(array(
"draw" =>intval($draw),
"recordsTotal" => intval($recordsTotal),
"recordsFiltered" => intval($recordsFiltered),
"data" => $infos
),JSON_UNESCAPED_UNICODE);
function fatal($msg)
{
echo json_encode(array(
"error" => $msg
));
exit(0);
}
- PHPdatatable服务器端处理(1)
- PHPdatatable服务器端处理(2)
- 服务器端图形处理
- 服务器端处理缩放图
- iOS内购充值 服务器端处理
- TCP客户/服务器端处理流程
- 10.Spring MVC4.1-异步请求处理(包含兼容浏览器的服务器端推送)
- 传奇源码分析-服务器端(LoginGate服务器处理)
- 在服务器端进行异常处理方法
- 传奇源码分析-服务器端(LoginGate服务器处理)
- 传奇源码分析-服务器端(LoginGate服务器处理)
- 服务器端技术----Http请求的处理过程
- 在客户端显示服务器端任务处理进度条
- 服务器端对请求的一些处理
- 服务器端处理不同时区用户的请求
- Web Service中服务器端异常的处理
- ComponentArt Grid触发和处理服务器端事件
- memcached服务器端网络连接的处理
- hdu 2860 Regroup 带权并查集
- 架构设计:系统间通信(2)——概述从“聊天”开始下篇
- linux 20个有趣命令
- Andrew NG 《machine learning》week 2,class3 —Computing Parameter Analytically
- 关于窗口句柄
- PHPdatatable服务器端处理(1)
- 学会用C语言编辑替换软件
- BZOJ2707 [SDOI2012]走迷宫
- 怎么替换字符串中的空格君?
- 微信红包调用获取不到证书路径问题
- iOS全新的联系人与联系人UI框架
- Start My JS Road
- JSON和JSONP
- 深入理解Java的接口和抽象类