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

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

sinbi 8년 전 조회 1,544

예를 들어,

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

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

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

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

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

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

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

답변 1개

채택된 답변
+20 포인트
8년 전

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

(예제)

select *

  from g5_login_log

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

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

답변에 대한 댓글 5개

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

적어주신 코드 부분이 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']."' ";
마르스컴퍼니
8년 전
참고 코드입니다.

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

[code]
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 .= "";
}

}
[/code]
s
sinbi
8년 전
알려주신 방법대로 해봤는데, 검색이 안 되네요. ^^;

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


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

[code]
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 .= "";
}

}
[/code]



2.
검색 옵션 추가
[code]
<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>
[/code]
마르스컴퍼니
8년 전
특별히 문제될만한 부분은 없어 보입니다.

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

해당 SQL 문을 직접 DB 에서 실행해보면서 디버깅을 해볼 수 있을 듯 합니다. (phpmyadmin 등)
s
sinbi
8년 전
아직 성공하진 못 했지만, 관심 갖고 답변 달아주셔서 정말 고맙습니다.

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

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

로그인