【问题标题】:jQuery Datatables - How to change serverside sort order [closed]jQuery Datatables - 如何更改服务器端排序顺序 [关闭]
【发布时间】:2020-08-18 11:50:42
【问题描述】:

我目前正在使用这个服务器端 SQLite 版本的数据表

http://www.abrandao.com/2014/03/server-side-datatables-with-sqlite-or-mysql-via-pdo/

正如你在他们的在线演示中看到的,它有一个奇怪的排序顺序

http://www.abrandao.com/lab/datatable_pdo/client.php

A
B
C
a
b
c

是否可以在没有辅助单元的情况下将其更改为这个?

a
A
b
B
c
C

或到

A
a
B
b
C
c

【问题讨论】:

标签: php sqlite datatables server-side


【解决方案1】:

(未经测试)示例 sippets

您可以从example site 扩展底层数据库查询/请求(请参阅服务器端信息)

现有查询:


$pdo = new ServerDataPDO($db_dsn,$db_user,$db_pass,$d['sql'],$d['table'],$d['idxcol']);
$result=$pdo->query_datatables(); //now return the JSON Requested data */
echo $result;

需要的查询扩展


$pdo->query("SELECT * FROM movie_table movie ORDER BY movie COLLATE NOCASE ASC");

如果您查看网站底部的code(您需要下载 zip 文件),您可以在 serverdatapdo.php 的第 273 行找到函数“query_datatables()”。在此函数中,您可以查看所有已定义的基本查询。

在函数的开头,您会发现变量“sOrder”。所以,我想,在您的情况下,您必须更改“sOrder”的定义才能更改 SQL 查询。

现有代码


            $sOrder .= "`".$this->aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
                ($_GET['sSortDir_'.$i]==='asc' ? 'asc' : 'desc') .", ";

建议的代码


            $sOrder .= "`".$this->aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
                ($_GET['sSortDir_'.$i]==='asc' ? 'COLLATE NOCASE ASC' : 'COLLATE NOCASE desc') .", ";

编辑

否则,您也可以在您的 php 代码中处理(排序等)从数据库接收到的整个对象。但是在这种情况下,您的服务器或多或少地两次执行相同的工作。 :)

【讨论】:

  • 感谢您的解释。事情现在清楚多了。
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2011-09-09
  • 2011-12-14
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多