다른 테이블 연관 필드를 이용해 검색하려면?

다른 테이블 연관 필드를 이용해 검색하려면?

QA

다른 테이블 연관 필드를 이용해 검색하려면?

본문

예를 들어,

https://sir.kr/g5_skin/10258  로그인 스킨 경우,

해당 테이블에 회원 닉네임은 저장안 되고, 오직 회원 아이디만 저장됩니다.

그러다보니, 회원 닉네임을 이용한 검색이 불가능합니다.

get_member 함수를 이용해 리스트에 닉네임을 뿌려주는 건 가능한데말이죠. 


g5_member 테이블의 닉네임 필드를 이용해 검색 옵션에 추가해 검색하는 방법은  없을까요? 

아니면, 해당 테이블에 닉네임 필드 생성부터 다 해줘야 가능할까요?


이 질문에 댓글 쓰기 :

답변 1

where절에 in 을 사용하여 다른 테이블 컬럼값을 이용한 검색이 가능합니다.


(예제)

select *

  from g5_login_log

 where mb_id in (select mb_id from g5_member where mb_nick = '%[검색어]%')

힌트 감사합니다. ^^
근데, 제가 초보라 위에 적어주신 코드를 어떻게 응용해야 할지 감이 잘 ^^;;

적어주신 코드 부분이 bbs/login_log.php 파일의 아래 코드와 관계 있어 보이는데,,,
혹시, 아래 코드 부분을 어떤 식으로 변형하면 될까요?


$sql_from = " FROM ".$g5['login_log_table'];
$sql_common = " WHERE (1) ";
if($is_admin)
{
    $sfl = $sfl?$sfl:"mb_id";
    if($stx)
        $sql_common .= " AND ".$sfl." LIKE '%".$stx."%' ";
    else
        $sql_common .= "";
}
else
    $sql_common .= " AND mb_id = '".$member['mb_id']."' ";

참고 코드입니다.

$sfl 값이 mb_nick 인 경우, 특별처리를 해주시면 됩니다.


if($is_admin)
{
    $sfl = $sfl?$sfl:"mb_id";
    if ($sfl == "mb_nick") {
    	$sql_common .= " AND mb_id in (select mb_id from {g5['member_table']} where ".$sfl." LIKE '%".$stx."%') ";
    } else {
    	if($stx)
        $sql_common .= " AND ".$sfl." LIKE '%".$stx."%' ";
	    else
	        $sql_common .= "";
    }

}

알려주신 방법대로 해봤는데, 검색이 안 되네요. ^^;

제가 수정한 내역은 아래와 같아요.


1.
알려주신 부분을 위 코드로 변경


if($is_admin)
{
    $sfl = $sfl?$sfl:"mb_id";
    if ($sfl == "mb_nick") {
    	$sql_common .= " AND mb_id in (select mb_id from {g5['member_table']} where ".$sfl." LIKE '%".$stx."%') ";
    } else {
    	if($stx)
			$sql_common .= " AND ".$sfl." LIKE '%".$stx."%' ";
	    else
	        $sql_common .= "";
    }

}




2.
검색 옵션 추가

<select name="sfl" id="sfl">        
		<option value="mb_nick" <?php echo get_selected($_GET['sfl'], "mb_nick") ?>>회원닉네임</option>
		<option value="mb_id" <?php echo get_selected($_GET['sfl'], "mb_id") ?>>회원아이디</option>
    </select>

특별히 문제될만한 부분은 없어 보입니다.

닉네임 검색시의 SQL 문이 기대한 되로 만들어졌는지를 확인하고, (echo $sql)

해당 SQL 문을 직접 DB 에서 실행해보면서 디버깅을 해볼 수 있을 듯 합니다. (phpmyadmin 등)

답변을 작성하시기 전에 로그인 해주세요.
전체 58
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT