2014-05-20 26 views
0

我在過濾器/搜索框中有一些問題DataTablesZIP-File)。它忽略像ä或ü這樣的變音符號,我認爲每個「特殊」字符都是有關的。我將字符串作爲實體存儲在數據庫中 - 以防止此問題得到徹底解決。但是我想,這個問題會在稍後處理,導致字符串在DataTables的表中正確顯示。正在搜索實體或變音符號(在DataTable中過濾)

使用服務器端處理我有編碼之前(例子/ server_side /腳本/ 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()來找出一些變量,但沒有任何運氣。

希望你能幫助我嗎?

回答

1

這個答案是相關的簡單server_side/simple.html例如,在數據表1.10.0:

此行添加到腳本的頂部/ server_processing.php:

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

這將(希望)將搜索請求轉換爲存儲在數據庫中的相同字符串。

ssp.class.php將基於請求參數構造一個mySql查詢。在之前執行此轉換是非常重要的,因爲實際的db查詢發生了。格式化程序只能處理所述查詢的結果。由於沒有發現任何東西,所以沒有格式化:-)

當然這隻會在你做得到請求時才起作用。如果您使用作爲ajax方法,您需要將$_GET更改爲$_POST

此外,這到目前爲止只適用於全球搜索。如果您使用單獨的列過濾功能,則還需要轉換所有columns[###][search][value]

最後,您可能需要使用編碼,因爲我不確定您的數據庫存儲數據的編碼方式。 (這與datatables_demo數據庫一起工作)。

+0

非常感謝你,這完美的作品。也感謝您的詳細完善!最好的祝福! – Sebastian