2011-08-11 2 views
0

DataTables 플러그인 용 클라이언트 측 필터링 (내장)이 정말 좋습니다. 그것은 당신의 검색 단어를 기반으로 검색 결과를 필터링합니다.내장 된 클라이언트 측 필터링을 모방하는 JQuery 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과 3을 모두 포함하지는 않습니다. 나는 이것이 간단하다는 것을 안다. 그러나 나는 그것에 너무 많은 것을 잃어 버렸습니다.

+0

내 질문에 응답했습니다. 아래를 참조하십시오. 감사. – rlemon

답변

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 .= ')'; 
} 
관련 문제