테스트 사이트 - 개발 중인 베타 버전입니다

그누보드 검색기능 채택완료

bde6891 10년 전 조회 5,002

안녕하세요,

 

그누보드의 검색기능에 대해 질문이 있습니다.

 

현재 저는 db에 숫자로 입력된 값을 가지고 와

출력할 때에는 한글로 출력하고 있습니다.

 

예를 들어 db값이 1이면 사과 , 2이면 바나나 이런식으로요..

과일이라는 컬럼에 1,2,..이걸 사과,바나나 이렇게요.

 

근데 검색기능을 사용할 때 검색대상에 과일을 추가하고 과일이름인 사과를 입력하면.. 이게 안뜬단 말이죠..

아무래도 db값인 숫자와 비교하기 떄문인거겠죠?

 

제가 변환한 값을 찾고자 하면 어디를 수정해주면 될까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

배열을 불러와서 검색을 해줘야 겠군요

$aaa = array(1 => "사과",2 => "바나나",3 => "배",4 => "딸기"); 

배열은 위 처럼 해도 되고

$aaa = array("사과","바나나","배","딸기"); 

이런식으로 해도 됩니다 물런 이경우 사과가 배열의 0번이 되겠지요  

db의 필드값에서 숫자 0은 null과 비슷한 역할을 하니 주의해서 사용해야 합니다 

 

이와 같이 배열을 넣고 이중에 배열이 있는지 확인해봅니다 

$key = array_search('배',$aaa); 이렇게 하면 배열의 키값을 얻을 수 있습니다 

echo $key; 하시면 배의 키값이 3이므로 3이 됩니다 이값을 쿼리에 넣어 주시면 됩니다 

뭐 $sql = " select * from where 필드명 = '".array_search("$stx",$aaa)."' "; 

대충 이런식입니다 

변수로 변환해서 써도 되고요

$aaaKey = array_search("$stx",$aaa);

$sql = " select * from where 필드명 = '".$aaaKey."' "; 

요렇게요 

근데 이 배열의 key값이 있을 때만 불러와야 하므로 if문을 사용하여서 제어한 다음 쿼리를 날리는게 좋겠네요

 

$aaaKey = array_search("$stx",$aaa);

if($aaaKey) { 

    $sql = " select * from where 필드명 = '".$aaaKey."' ";  

그래야 키값이 없을 때 오류가 나지 않을 테니까요 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

b
bde6891
10년 전
음...상당히 어렵네요..
알려주신 방법을 적용하려 했으나.. 배열에 들어가는 값들이 너무 많아서 그런가..오류가 나네요..흑..


혹 db에 '한글'이라는 컬럼을 새로 만들고
list.skin에서 값을 뿌려줄 때
1을 사과로 변환 후
sql update문을 이용하여 한글이라는 컬럼에 사과라는 값을 넣은 후

검색부분에
<option value="한글"<?php echo get_selected($sfl, '한글'); ?>>과일</option>
이런식으로 해주는건 어떤가요?

update문 사용시
$sql = "update 테이블 set 과일='사과' where wr_id='$wr_id'";
<?php echo $list[$i]['과일'] ?>

이렇게 해봤는데 오류가 납니다...
b
bde6891
10년 전
네 아무래도 값이 많아서 제가 입력을 잘못한거 같아여...
불량학생
10년 전
배열의 값이 많아서 오류가 나는게 아니고 잘 못 넣으셨겠지요
필드를 하나 추가할거면 과일 이름이라던지 이런게 들어가면 되겠지요
기존 숫자는 그대로 놔두시구요
그러면 숫자로 검색을 하던지 이름으로 검색을 하던지 찾을 수가 있겠지요
b
bde6891
10년 전
update쿼리르 사용해도
db에 값이 들어오지를 않네여
$sql = "update 테이블 set 과일='사과' where wr_id='$wr_id'";
쿼리문이 어디가 틀린건가요?
불량학생
10년 전
$sql = "update 테이블 set 과일='사과' where wr_id='".$wr_id."'";
이렇게 사용하시거나
$sql = "update 테이블 set 과일='사과' where wr_id='{$wr_id}'";
이렇게 사용하시거나 하셔야겠지요
작은따옴표 안에서 변수는 변수가 아니고 문자가 됩니다

댓글을 작성하려면 로그인이 필요합니다.

배열을 간단하게 넣어 보겠습니다 

가령 여분필드 bo_1 에 " |사과|배|파인애플|과즙|앵두|딸기|바나나 "와 같이 넣습니다  

이녀석을 불러와서 배열로 자장하는건 간단하니까요

$aaa = explode("|",$bo_1); 이렇게 하면 배열이 저장이 되겠지요 근데 0을 사용하면 안되니까 맨앞에는 빈칸을 넣어서 0에는 아무값도 안들어 가게 해야겠지요 

이제 이 배열로 검사를 하면 되겠지요 

 

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

b
bde6891
10년 전
음 배열은 해도해도 어렵네요..
배열만 잘 써도 코딩은 줄어들텐데..
불량학생
10년 전
게시판의 관리자에서 해당게시판의 여분필드에 원하는 값들을 | 로 분할할수있게 넣으셔도 되고요
아니면 이미 다른곳에 들어가 있는 값이라면 그녀석을 분리해서 배열로 저장할 수 있는 방법을 생각해보세요
b
bde6891
10년 전
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인