불러오는 조건 구문에 대하여 설명 좀 해주세요~
본문
$sql = " select * from {$g5['board_table']} a, {$g5['group_table']} b where a.gr_id = b.gr_id ";
if ($is_admin == 'group')
$sql .= " and b.gr_admin = '{$member['mb_id']}' ";
else if ($is_admin == 'board')
$sql .= " and a.bo_admin = '{$member['mb_id']}' ";
$sql .= " order by a.gr_id, a.bo_order, a.bo_table ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$list[$i] = $row;
}
제가 보기에는 boat_table 에서 gr_id를 불러와서 group_table 의 같은 그룹 조건을 맞추는것 같은데...
그리고 정렬 부분도 좀 해깔려서요...
답변 1
$sql = " select * from {$g5['board_table']} a, {$g5['group_table']} b where a.gr_id = b.gr_id ";
게시판테이블과 그룹테이블을 join해서 가져옵니다.
결과는 bo_table, bo_subject, ..., gr_id, gr_subject, ... 이렇게 되겠죠.
게시판정보를 가져오는데 해당그룹의 정보도 같이 가져오는겁니다.
if ($is_admin == 'group')
$sql .= " and b.gr_admin = '{$member['mb_id']}' ";
else if ($is_admin == 'board')
$sql .= " and a.bo_admin = '{$member['mb_id']}' ";
현재 로그인중인 사용자가 그룹관리자로 지정되있다면 $is_admin 에 'group'의 값이, 게시판관리자로 지정되있다면 $is_admin에 'board'라고 값이 들어가게 됩니다.
그래서 현재 사용자가 그룹관리자면 이 사용자가 그룹관리자로 지정되있는 그룹 및 게시판정보를,
게시판 관리자라면 이 사용자가 게시판관리자로 지정되있는 게시판 및 그룹의 정보를 가져오도록 조건을 추가하는 겁니다.
그룹관리자도 게시판관리자도 아니라면 해당 조건이 안붙으니 모든 게시판 및 그룹정보를 가져오게 되겠죠.
$sql .= " order by a.gr_id, a.bo_order, a.bo_table ";
정렬순서입니다. "order by 필드명 정렬순서"를 명시할 수 있는데 정렬순서에는 asc, desc이 들어가고 생략되는 경우 asc으로 인식해서 오름차순으로 정렬합니다.
우선 그룹id의 abc 순으로 정렬합니다.
같은 그룹내에서라면 그 다음으로 bo_order 값으로 정렬합니다. bo_order에는 숫자가 들어가고 게시판설정(목록에서도 보이죠)에서 지정해줄 수 있습니다. 기본값은 0으로 모두 같은 값이 들어가 있습니다.
같은 bo_order내에서는 bo_table의 abc순으로 정렬합니다.
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$list[$i] = $row;
}
위에서 정의한 sql문을 실행하고 그 결과값을 가지고 반복하여 $list에 배열로 저장합니다.
!-->!-->!-->!-->