회원검색에 검색조건을 추가했는데 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

회원검색에 검색조건을 추가했는데 정보

회원검색에 검색조건을 추가했는데

본문

member_list.php에 조건을 추가했는데 안되네요

mb_1에 딸기반이라고 입력된 회원과 mb_7 에 1 이 입력된 회원을 불러옵니다.

불러오기는 잘네요(두조건중 한조건이라도 맞으면 불어옴 or)

근데 회원관리 검색창에서 검색을 하면 한회원만 검색이 되어야 하는데

mb_7에 1 이 입력된 모든 회원이 같이 검색 되어 리스트에 나타납니다.

어디를 수정해줘야 할지...막막하네요...

고수님들의 따뜻한 손길 부탁드립니다...

꾸벅...

======================================================
<?
$sub_menu = "200100";
include_once("./_common.php");

auth_check($auth[$sub_menu], "r");

$token = get_token();

$sql_common = " from $g4[member_table] ";

$sql_search = " where (1) ";
if ($stx) {
    $sql_search .= " and ( ";
    switch ($sfl) {
      case "mb_id" :
            $sql_search .= " ($sfl = '$stx') ";
            break;
        case "mb_3" :
            $sql_search .= " ($sfl = '$stx') ";
            break;
        case "mb_level" :
            $sql_search .= " ($sfl = '$stx') ";
            break;
        case "mb_tel" :
        case "mb_hp" :
            $sql_search .= " ($sfl like '%$stx') ";
            break;
        default :
            $sql_search .= " ($sfl like '$stx%') ";
            break;
    }
    $sql_search .= " ) ";
}

//if ($is_admin == 'group') $sql_search .= " and mb_level = '$member[mb_level]' ";
if ($is_admin != 'super')
    $sql_search .= " and mb_level <= '$member[mb_level]' ";
    $sql_search .= " and mb_1 = '딸기반' "; // 소속만 나타나게)
    $sql_search .= " or mb_7 = '1' "; // 소속만 나타나게)





if (!$sst) {
    $sst = "mb_datetime";
    $sod = "desc";
}

$sql_order = " order by $sst $sod ";

$sql = " select count(*) as cnt
        $sql_common
        $sql_search
        $sql_order ";
$row = sql_fetch($sql);
$total_count = $row[cnt];

$rows = $config[cf_page_rows];
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if (!$page) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함

// 탈퇴회원수
$sql = " select count(*) as cnt
        $sql_common
        $sql_search
            and mb_leave_date <> ''
        $sql_order ";
$row = sql_fetch($sql);
$leave_count = $row[cnt];

// 차단회원수
$sql = " select count(*) as cnt
        $sql_common
        $sql_search
            and mb_intercept_date <> ''
        $sql_order ";
$row = sql_fetch($sql);
$intercept_count = $row[cnt];

$listall = "<a href='$_SERVER[PHP_SELF]' class=tt>처음</a>";

$g4[title] = "회원관리";
include_once("./admin.head.php");

$sql = " select *
          $sql_common
          $sql_search
          $sql_order
          limit $from_record, $rows ";
$result = sql_query($sql);

$colspan = 15;
?>

<script language="javascript" src="<?=$g4[path]?>/js/sideview.js"></script>
<script language="JavaScript">
var list_update_php = "member_list_update.php";
var list_delete_php = "member_list_delete.php";
</script>

<table width=100%>
<form name=fsearch method=get>
<tr>
    <td width=50% align=left><?=$listall?>
        (총회원수 : <?=number_format($total_count)?>)
        <!--<a href='?sst=mb_intercept_date&sod=desc&sfl=<?=$sfl?>&stx=<?=$stx?>' title='차단된 회원부터 출력'><font color=orange>차단 : <?=number_format($intercept_count)?></font></a>,
        <a href='?sst=mb_leave_date&sod=desc&sfl=<?=$sfl?>&stx=<?=$stx?>' title='탈퇴한 회원부터 출력'><font color=crimson>탈퇴 : <?=number_format($leave_count)?></font></a>)-->
    </td>
    <td width=50% align=right>
        <select name=sfl class=cssfl>
<!--          <option value='mb_1'>소속</option>-->
            <option value='mb_id'>회원아이디</option>
            <option value='mb_name'>이름</option>
            <option value='mb_nick'>별명</option>
            <option value='mb_3'>이름</option>
            <option value='mb_tel'>전화번호</option>
            <option value='mb_hp'>핸드폰번호</option>
            <option value='mb_level'>권한</option>
            <option value='mb_email'>E-MAIL</option>
            <option value='mb_datetime'>가입일시</option>
        </select>
        <input type=text name=stx class=ed required itemname='검색어' value='<? echo $stx ?>'>
        <input type=image src='<?=$g4[admin_path]?>/img/btn_search.gif' align=absmiddle></td>
</tr>
</form>
</table>
  • 복사

댓글 전체

딸기반 이고(and) 소속이1이어야 하는건가요?

$sql_search .= " and mb_level <= '$member[mb_level]' ";
$sql_search .= " and mb_1 = '딸기반' "; // 소속만 나타나게)
$sql_search .= " or mb_7 = '1' "; // 소속만 나타나게)

이 부분은 딸기반 이거나(or) 소속이1... 양쪽 하나만 만족해도 다 나오는 쿼리인데요.
죄송합니다. 설명이 부족했네요...

딸기반도 나오고 mb_7 이 1 인 회원도 둘다 리스트에 나오게 하는 거에요...

그리고 검색에 조건을 넣어서 한 회원만 나오게 해야하는데

회원과 함께 mb_7이 1인 회원까지 모두 검색 리스트에 나와서요...
검색에 조건을 넣으셔서 한 회원만 나온다고 하셨는데 그 조건은 검색창에 있는 값으로 결정하는건가요? 아니면 코드에 직접 명시하시는 건가요?
우매한 질문에 답변 해주셔서 너무 감사합니다...

그누 회원관리 창에 위와 같이 두조건이 맞는 회원들이 보입니다.

그런데 회원관리 창에서 회원이름을 적고 검색을 눌렀을때 한 회원만 나와야 하는데

그 회원 포함 mb_7 이 1로 선택된 모든 회원이 보이게 됩니다...ㅠㅠ

그래서 mb_7 이 1인 모든 회원이 나오는게 아니라

mb_1이 딸기반 또는(or) mb_7이 1인 회원이 리스트에 나오면

그 회원중에 화면 검색어 란에 입력된 값과 동일한 회원 한명만 나오게 하려는 겁니다...

감사합니다...
첫번째 답변에서 긴가민가해서 계속 여쭤봤는데 너무 오래 갔네요 ㅎㅎ...

select * from g4_member where (1) and (mb_name='이름' and mb_level<=3 and mb_1='딸기반' or mb_7='1' )
select * from g4_member where mb_name='이름' and mb_level<=3 and mb_1='딸기반' or mb_7='1'
select * from g4_member where (mb_name='이름' and mb_level<=3 and mb_1='딸기반') or mb_7='1'

연산자 우선순위로 정리하면 쿼리는 위처럼 정리되지요.
마지막 쿼리보시면 mb_7=1인 모든 회원이거나 검색한 회원이면서 딸기반인 회원이 나오는게 현재 쿼리네요

select * from g4_member where mb_name='이름' and mb_level<=3 and (mb_1='딸기반' or mb_7='1')
이렇게 된다면 이름으로 검색한 회원이고 mb_1=딸기반 이거나 mb_7=1 어느 한쪽을 만족하는 회원만 나오는 이걸 원하시는건가요??
if ($is_admin != 'super')
    $sql_search .= " and mb_level <= '$member[mb_level]' ";
    $sql_search .= " and mb_1 = '딸기반' "; // 소속만 나타나게)
    $sql_search .= " or mb_7 = '1' "; // 소속만 나타나게)

결론은
if ($is_admin != 'super')
    $sql_search .= " and mb_level <= '$member[mb_level]' ";
    $sql_search .= " and (mb_1 = '딸기반' or mb_7 = '1') "; // 어느 한쪽이라도 소속을 만족하는 경우라면 나타나게
© SIRSOFT
현재 페이지 제일 처음으로