搜索实体或空格(数据表中的过滤器)



我在 datatable (ZIP-File)中的过滤器/搜索框有一些问题。它忽略了像ä或ü这样的Umlauts,我认为每个"特殊"字符都很重要。我将字符串作为实体存储在数据库中-一般防止此问题。但问题,我猜,是以后处理,因为字符串正确显示在数据表的表。

使用服务器端处理我有可能编码字符串之前(示例/server_side/scripts/server_processing.php)像

array( 'db' => 'Name', 'dt' => 2, 'formatter' => function( $d, $row ) { return html_entity_decode($d, ENT_QUOTES, "UTF-8"); } ),

…但是,不管有没有这个添加,我都无法搜索到提到的字母。因此,可能被推回服务器/数据库以获得结果的过滤器字符串是不正确的。

也许改变ssp.class.php会有所帮助?我已经尝试用htmlentities()包围一些变量,但没有任何运气。

希望你能帮助我?

这个答案与dataTables 1.10.0中的简单server_side/simple.html示例有关:

将这行添加到scripts/server_processing.php的顶部:

$_GET['search']['value']=htmlentities($_GET['search']['value'],ENT_QUOTES,'UTF-8');

这将(希望)将搜索请求转换为存储在数据库中的相同字符串。

ssp.class.php将根据请求参数构造一个mySql Query。在实际的db-query发生之前进行转换是很重要的。格式化程序将只处理上述查询的结果。因为没有找到任何内容,所以不会格式化任何内容:-)

当然,这只会工作,如果你做一个get请求。如果您使用post作为ajax方法,您需要将$_GET更改为$_POST

到目前为止,这只适用于全局搜索。如果使用单独的列过滤,还需要转换所有的columns[###][search][value]

最后,你可能需要玩周围的编码,因为我不确定在编码你的数据库存储数据。

最新更新