예를 들어,
https://sir.kr/g5_skin/10258 로그인 스킨 경우,
해당 테이블에 회원 닉네임은 저장안 되고, 오직 회원 아이디만 저장됩니다.
그러다보니, 회원 닉네임을 이용한 검색이 불가능합니다.
get_member 함수를 이용해 리스트에 닉네임을 뿌려주는 건 가능한데말이죠.
g5_member 테이블의 닉네임 필드를 이용해 검색 옵션에 추가해 검색하는 방법은 없을까요?
아니면, 해당 테이블에 닉네임 필드 생성부터 다 해줘야 가능할까요?
답변 1개 / 댓글 5개
채택된 답변
+20 포인트
마르스컴퍼니
2017-10-07 (토) 17:58:24
where절에 in 을 사용하여 다른 테이블 컬럼값을 이용한 검색이 가능합니다.
(예제)
select *
from g5_login_log
where mb_id in (select mb_id from g5_member where mb_nick = '%[검색어]%')
답변에 대한 댓글 5개
sinbi
2017-10-07 (토) 18:08:13
마르스컴퍼니
2017-10-07 (토) 18:12:03
참고 코드입니다.
$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]
sinbi
2017-10-07 (토) 19:56:53
알려주신 방법대로 해봤는데, 검색이 안 되네요. ^^;
제가 수정한 내역은 아래와 같아요.
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]
마르스컴퍼니
2017-10-08 (일) 17:15:04
특별히 문제될만한 부분은 없어 보입니다.
닉네임 검색시의 SQL 문이 기대한 되로 만들어졌는지를 확인하고, (echo $sql)
해당 SQL 문을 직접 DB 에서 실행해보면서 디버깅을 해볼 수 있을 듯 합니다. (phpmyadmin 등)
닉네임 검색시의 SQL 문이 기대한 되로 만들어졌는지를 확인하고, (echo $sql)
해당 SQL 문을 직접 DB 에서 실행해보면서 디버깅을 해볼 수 있을 듯 합니다. (phpmyadmin 등)
답변을 작성하려면 로그인이 필요합니다.
근데, 제가 초보라 위에 적어주신 코드를 어떻게 응용해야 할지 감이 잘 ^^;;
적어주신 코드 부분이 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']."' ";