2011-08-17 3 views
0

검색 창에 입력 한 글자를 기준으로 제안 사항을 검색하고 있습니다.검색어를 문자로 검색 하시겠습니까?

예 :

나는이 단어를 데이터베이스에 있습니다 salam, salavat, sabos, sandal, sefid, siah and ...
내가 검색 상자에 입력 : s - 화면이 단어-> salam, salavat, sabos, sandal, sefid, siah
이제 경우 입력 : sa - - 이 단어 표시 - > salam, salavat, sabos, sandal,
입력 할 경우 : sala - 표시이 단어 - 입력 한 경우 > salam, salavat
: salam - 디스플레이를이 단어-> salam

내가 jQuery를 이벤트 .keyup()를 사용 (의 keyup이 잘 작동)과에 CodeIgniter를 사용하고 백엔드 (codeigniter에서 쿼리를 통해 내가 원하는 것).

내 쿼리를 참조하십시오 (이 쿼리에서를 $find는 이미 입력 한 순서를 포함하고 난 데이터베이스에서 검색하는 like 키워드를 사용하고 있습니다) :

$find = $this->input->post('find'); 
    $where = "date LIKE '$find' OR 
      name LIKE '$find' OR 
      star LIKE '$find' OR 
      address LIKE '$find' OR 
      number_phone LIKE '$find' OR 
      type LIKE '$find' OR 
      service LIKE '$find' OR 
      units LIKE '$find' OR 
      useradmin LIKE '$find'"; 

$query = $data['results'] = $this->db->query("SELECT @rownum:[email protected]+1 rownum, t.* 
     FROM (
     SELECT * 
     FROM my_table 
     WHERE 
      $where 
     ORDER BY id desc 
     LIMIT $offset, $coun_page  
     ) t, 
     (SELECT @rownum:=0) r"); 

다음 쿼리는 작동하지만, 내가 사용할 수 없습니다 그것의 rownum의 이유는

$this->db->order_by("id", "desc")->like('name', $name)->get('my_table') 

어떻게 rownum과 제안을받을 수 있나요?

답변

5

부분 문자열을 LIKE 쿼리와 일치 시키려면 SQL에서 백분율 문자 인 와일드 카드 문자 (%)를 사용해야합니다.

예.

WHERE foo LIKE '%bar%'foo에 하위 문자열 'bar'이 포함 된 모든 행을 찾습니다.

WHERE foo LIKE 'bar%'foo이 부분 문자열 'bar'으로 시작하는 모든 행을 찾습니다.

WHERE foo LIKE '%bar'foo 열이 부분 열 'bar'으로 끝나는 모든 행을 찾습니다.

추신. datetype과 같이 (잠재적으로) 예약 된 이름과의 충돌을 피하려면 백분율 틱으로 열 이름을 포함하는 것이 좋습니다.

SELECT `column1`, `column2` FROM `table` WHERE `column3` = 'value' 
+0

확인, 탱크, 이제 데이터베이스 단어'좋은 차, 좋은, 좋은, 좋은 car'을 가지고 우리는'단어를 검색 할 경우 nice' : 어떻게 ** ** (목록) BY ORDER 것과 같은'좋은 , 멋진 자동차, 멋진 자동차'또는 검색된 단어'nice car' list :'nice car, nice car, nice, nice'? –

+2

한 가지 질문에 여러 질문을하지 마십시오.귀하의 원래 질문에 귀하가 만족하는 방식으로 대답 할 때 그것을 닫고 (정답을 승인하십시오) 새로운 질문으로 후속 질문을하십시오. –