jQuery Datatables - 如何改变服务器端的排序顺序[已关闭]。

问题描述 投票:0回答:1

我目前正在使用这个服务器端SQLite版本的Datatables。

http:/www.abrandao.com201403server-side-datatables-with-sqlite-or-mysql-via-pdo

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

http:/www.abrandao.comlabdatatable_pdoclient.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个回答
1
投票

(未经测试) 示例 sippets

你可以扩展底层数据库查询请求,从 示例网站 (参见服务器端信息)

现有的查询。


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

如果你研究一下 编码 在网站底部(你需要下载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代码中使用从数据库中接收到的整个对象进行工作(排序等)。但是,在这种情况下,你的服务器或多或少地做了两次同样的工作:)

© www.soinside.com 2019 - 2024. All rights reserved.