반응형
예를들어 검색창에 베르나르베르베르 라고 검색을 했다~
하지만 DB 속에는 베르나르 베르베르 라고 저장이 되어있는 자료는 어떻게 검색을 해야할까?
(설마 둘의 차이를 못느끼진 않겠지? -_-ㅋㅋㅋ)
혹은 반대로 검색창에 베르나르 베르베르 라고 검색을 했는데
DB속에는 베르나르베르베르 라고 저장이 되어있다면~?
이것을 해결하는 것은 너무나도 쉽다~! 간단한 함수 하나면 끝~!
일단 전자의 경우 MySQL 쿼리문을 수정해주면 된다. 예를들어
ex)
$keyword = $_POST['keyword']; //넘어오는 값 변수 설정
$keyword = trim($keyword); //앞뒤 공백 제거
$query = "select author from books where author like %$keyword%"; //쿼리문
이런식으로 되어있는 쿼리문에 간단한 함수만 추가하면 된다.
위의 예시에서 3번째줄에 있는 where author를 주목하라~~ 어떻게 바꾸냐면
$query = "select author from books where replace(author, ' ', '') like %$keyword%";
노란줄 부분을 잘 보면 replace 라는 함수를 추가해놓았다. 위 함수는
파라메터를 3개 받는데 repalce(필드명, 바꿔야되는 문자, 바꿀문자) 이렇게 써주면 된다.
위 같은 경우 author라는 필드의 값에 있는 ' '(공백)이 ''(공백없음)으로 바뀐다.
쿼리를 이렇게 해놓으면 replace로 바꿔놓은 필드들의 값은 공백이 사라진다~ ㅎㅎ
검색할때 베르나르베르베를 검색하면 어떻게 띄어쓰기가 되어있던 검색이 된다.
자 그럼 위에 적었던 상황중 2번째 상황~
이것도 마찬가지~ 쉽다 ㅋㅋ 여긴 MySQL 카테고리라고 설정해놨지만...
이건 PHP에서 쓰이는것이다.(위에도 사실 PHP로 코딩한거지만~ㅋㅋ)
ex)
$keyword = $_POST['keyword']; //넘어오는 값 변수 설정
$keyword = trim($keyword); //앞뒤 공백 제거
이부분에서 $keyword 문자열의 공백을 제거하는(trim으로 앞뒤는 제거했지만 문자 사이사이) 함수를 이용해 문자열의 공백을 없애면 된다~! 어떻게 하느냐~ 앞의 replace 랑 비슷하다~~ php라서 다른 이름을 쓰는 것 빼곤 쓰는데는 크게 지장이 없다.(물론 기능도 다르지만 큰 기능은 비슷하므로~)
이렇게 써보자~ str_replace(바뀌는 문자, 바꿀 문자, 문자열) 이름과 순서가 다르다~
이 함수는 문자열의 문자를 바꿔주는 역할을 한다. 아래와 같이 쓴다.
str_replace(' ', '', $keyword); 이렇게 하면 $keyword 속에 있던 공백을 없애준다.
이걸 적용 후 검색창에 베르나르베르베르를 치던 베르나르 베르베르 를 치던
베르 나 르 베 르 베르 를 치던 DB쿼리에는 베르나르베르베르 로 검색이 들어간다. 그럼 앞의 둘의 상황을 조합하면
베르나르베르베르를 어떻게 검색하든 베르나르베르베르 글자가 들어가면 다 나온다
하지만 DB 속에는 베르나르 베르베르 라고 저장이 되어있는 자료는 어떻게 검색을 해야할까?
(설마 둘의 차이를 못느끼진 않겠지? -_-ㅋㅋㅋ)
혹은 반대로 검색창에 베르나르 베르베르 라고 검색을 했는데
DB속에는 베르나르베르베르 라고 저장이 되어있다면~?
이것을 해결하는 것은 너무나도 쉽다~! 간단한 함수 하나면 끝~!
일단 전자의 경우 MySQL 쿼리문을 수정해주면 된다. 예를들어
ex)
$keyword = $_POST['keyword']; //넘어오는 값 변수 설정
$keyword = trim($keyword); //앞뒤 공백 제거
$query = "select author from books where author like %$keyword%"; //쿼리문
이런식으로 되어있는 쿼리문에 간단한 함수만 추가하면 된다.
위의 예시에서 3번째줄에 있는 where author를 주목하라~~ 어떻게 바꾸냐면
$query = "select author from books where replace(author, ' ', '') like %$keyword%";
노란줄 부분을 잘 보면 replace 라는 함수를 추가해놓았다. 위 함수는
파라메터를 3개 받는데 repalce(필드명, 바꿔야되는 문자, 바꿀문자) 이렇게 써주면 된다.
위 같은 경우 author라는 필드의 값에 있는 ' '(공백)이 ''(공백없음)으로 바뀐다.
쿼리를 이렇게 해놓으면 replace로 바꿔놓은 필드들의 값은 공백이 사라진다~ ㅎㅎ
검색할때 베르나르베르베를 검색하면 어떻게 띄어쓰기가 되어있던 검색이 된다.
자 그럼 위에 적었던 상황중 2번째 상황~
이것도 마찬가지~ 쉽다 ㅋㅋ 여긴 MySQL 카테고리라고 설정해놨지만...
이건 PHP에서 쓰이는것이다.(위에도 사실 PHP로 코딩한거지만~ㅋㅋ)
ex)
$keyword = $_POST['keyword']; //넘어오는 값 변수 설정
$keyword = trim($keyword); //앞뒤 공백 제거
이부분에서 $keyword 문자열의 공백을 제거하는(trim으로 앞뒤는 제거했지만 문자 사이사이) 함수를 이용해 문자열의 공백을 없애면 된다~! 어떻게 하느냐~ 앞의 replace 랑 비슷하다~~ php라서 다른 이름을 쓰는 것 빼곤 쓰는데는 크게 지장이 없다.(물론 기능도 다르지만 큰 기능은 비슷하므로~)
이렇게 써보자~ str_replace(바뀌는 문자, 바꿀 문자, 문자열) 이름과 순서가 다르다~
이 함수는 문자열의 문자를 바꿔주는 역할을 한다. 아래와 같이 쓴다.
str_replace(' ', '', $keyword); 이렇게 하면 $keyword 속에 있던 공백을 없애준다.
이걸 적용 후 검색창에 베르나르베르베르를 치던 베르나르 베르베르 를 치던
베르 나 르 베 르 베르 를 치던 DB쿼리에는 베르나르베르베르 로 검색이 들어간다. 그럼 앞의 둘의 상황을 조합하면
베르나르베르베르를 어떻게 검색하든 베르나르베르베르 글자가 들어가면 다 나온다
반응형
'유용한정보' 카테고리의 다른 글
랜덤배너소스 + 랜덤 아이프레임 소스 (0) | 2014.05.24 |
---|---|
자동새로고침 (0) | 2014.05.24 |
input박스에 값이 들어오자 마자 해당되는값 출력 (0) | 2014.05.05 |
asp.net DataList컨트롤에서 페이징구현 (0) | 2014.05.05 |
브라우저를 동적으로 부드럽게 리사이즈 (0) | 2014.04.30 |
이미지의 가로크기가 지정한 것보다 크면 자동 크기 축소/확대 (0) | 2014.04.30 |
무단링크 금지 소스 (0) | 2014.04.30 |
업로드 확장자 체크하기 (0) | 2014.04.30 |
댓글