DataTables插件的客户端过滤(内置)非常好。它会根据您的搜索字词,在任何字段上逐字逐句过滤您的搜索结果。
提供的示例服务器端代码会针对任何字段搜索整个字符串。我该如何修改
$sWhere = "";
if ($_GET['sSearch'] != "") {
$sWhere = "WHERE (";
for ($i = 0; $i < count($aColumns); $i++) {
$sWhere .= $aColumns[$i] . " LIKE '%" . mysql_real_escape_string($_GET['sSearch']) . "%' OR ";
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ')';
}
实现我正在寻找的目标?
到目前为止,我已尝试过以下内容:
$sWhere = "";
if ($_GET['sSearch'] != "") {
$sWhere = "WHERE (";
$words = explode(" ",$_GET['sSearch']);
for ($i = 0; $i < count($aColumns); $i++) {
for($j = 0; $j < count($words); $j++) {
if($words[$j] != "") {
$sWhere .= $aColumns[$i] . " LIKE '%" . mysql_real_escape_string($words[$j]) . "%' OR ";
}
}
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ')';
}
没有运气。我想我只需要遍历搜索字符串中的所有“单词”,然后针对这些单词搜索每一列。现在我正在失去逻辑。我正在搜索所有字段的所有字段,我只需要通过AND和OR对它们进行分组,如果我有下表
|col1 | col2 | col3
-----------------------
#1| aaa | bbb | ccc
#2| aaa | ddd | xxx
#3| hugo | aaa | rap
我搜索“aaa bbb”我只返回结果#1而不是全部三个。 我知道这很简单..但是我一直在绞尽脑汁这么多我迷失了自己。
答案 0 :(得分:1)
这是我的新服务器端搜索...如果他们想在他们的DataTable上实现相同的功能,那就是其他任何人。
$sWhere = "";
if ($_GET['sSearch'] != "") {
$sWhere = "WHERE (";
$words = explode(" ",$_GET['sSearch']);
for ($j = 0; $j < count($words); $j++) {
if ($words[$j] != "") {
$sWhere .= "(";
for ($i = 0; $i < count($aColumns); $i++) {
$sWhere .= $aColumns[$i] . " LIKE '%" . mysql_real_escape_string($words[$j]) . "%' OR ";
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ") AND ";
}
}
$sWhere = substr_replace($sWhere, "", -4);
$sWhere .= ')';
}