다른 테이블 연관 필드를 이용해 검색하려면? 채택완료
sinbi
8년 전
조회 1,544
예를 들어,
https://sir.kr/g5_skin/10258">https://sir.kr/g5_skin/10258 로그인 스킨 경우,
해당 테이블에 회원 닉네임은 저장안 되고, 오직 회원 아이디만 저장됩니다.
그러다보니, 회원 닉네임을 이용한 검색이 불가능합니다.
get_member 함수를 이용해 리스트에 닉네임을 뿌려주는 건 가능한데말이죠.
g5_member 테이블의 닉네임 필드를 이용해 검색 옵션에 추가해 검색하는 방법은 없을까요?
아니면, 해당 테이블에 닉네임 필드 생성부터 다 해줘야 가능할까요?
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
마르스컴퍼니
Expert
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년 전
�
마르스컴퍼니
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]
$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]
제가 수정한 내역은 아래와 같아요.
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 등)
닉네임 검색시의 SQL 문이 기대한 되로 만들어졌는지를 확인하고, (echo $sql)
해당 SQL 문을 직접 DB 에서 실행해보면서 디버깅을 해볼 수 있을 듯 합니다. (phpmyadmin 등)
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']."' ";