메뉴에 관해 다시 질문드립니다. 정보
메뉴에 관해 다시 질문드립니다.본문
답변에 나스카님이 폴록님의 메뉴 http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=17123&sca=&sfl=mb_id%2C1&stx=ntoy
를 가르쳐주셨는데요.
로그인하면 자신이 속한 그룹과 자신의 등급에 맞는 메뉴만 출력하게 하려거든요.
근데 폴록님의 메뉴는 모든메뉴가 다 나오더군요.
알수없는 스크립트오류도 보이고 ㅡ.ㅡ
그리고 그룹접근사용 체크를 하니 해당게시판과 그룹이 모두 안보이는군요.
A회원이 3레벨이며 A그룹일때 A회원에겐 3레벨권한으로 볼수있는 게시판과 A그룹에 속한 게시판만 보이게 할수는
없을까요?
참고로 모든 그룹은 접근사용에 체크를 해두었습니다.
하루종일 팁과 질문란을 뒤졌는데 마땅한 답변이 없는듯하네요.
관련질문은 종종보이는데 ...
댓글 전체
그누보드는 회원테이블에 회원이 속한 그룹명이 존재하지 않습니다. 우선 해당 회원이 속한 그룹명을
얻어 와야하는데 해당 회원의 그룹명이 들어있는 테이블은 'g4_group_member' 테이블입니다.
따라서 'g4_group_member' 테이블에서 우선 해당 회원이 속한 그룹명들을 얻어오고
얻어온 그룹명에 속한 게시판들을 'g4_board' 테이블에서 얻어 옵니다. 얻어 온 게시판들의 목록보기
권한을 체크하여 해당 게시판의 링크가 출력될지 정해줘야 합니다.
아래 소스는 제가 내비도님의 글을 보고 제 생각대로 한번 코딩해본 소스입니다.
아직 PHP 초보라서 정확한 답변일지는 잘 모르겠지만 약간의 도움이라도 됐으면 하네여 ^^;
<!---------------------------------------------------------------->
<?
/* 'g4_group_member' 테이블에서 해당회원이 속한 그룹명 얻어오기 */
$sql = " select gr_id from g4_group_member where mb_id = '$member[mb_id]' ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
$i = 0;
while ($row = sql_fetch_array($result))
{
$list[$i][gr_id] = $row['gr_id'];
$i++;
}
?>
<?
for ($i = 0 ; $i < $total_count ; $i++)
{
// 그룹명 출력
echo "그룹명 : " . $list[$i][gr_id] . "<br>";
/* 얻어온 그룹 아이디로 'g4_board' 테이블에서 해당 그룹에 속한 게시판명(bo_table)과 게시판 목록보기 권한(bo_list_level), 게시판 제목(bo_subject)을 얻어옵니다. */
$sql_gr[$i] = " select bo_table, bo_list_level, bo_subject from g4_board where gr_id = '" . $list[$i][gr_id] . "' ";
$result_gr[$i] = sql_query($sql_gr[$i]);
$total_count_gr[$i] = mysql_num_rows($result_gr[$i]);
$i_gr = 0;
while ($row_gr[$i] = sql_fetch_array($result_gr[$i]))
{
$list_gr[$i][$i_gr][bo_table] = $row_gr[$i]['bo_table'];
$list_gr[$i][$i_gr][bo_list_level] = $row_gr[$i]['bo_list_level'];
$list_gr[$i][$i_gr][bo_subject] = $row_gr[$i]['bo_subject'];
$i_gr++;
}
for ($i_gr = 0 ; $i_gr < $total_count_gr[$i] ; $i_gr++)
{
// 회원의 레벨이 게시판 목록보기 권한보다 높을 경우에만 메뉴출력
if ($member[mb_level] > $list_gr[$i][$i_gr][bo_list_level])
echo "<a href=" . $g4[bbs_path] . "/board.php?bo_table=" . $list_gr[$i][$i_gr][bo_table] . ">" . $list_gr[$i][$i_gr][bo_table] . "</a><br>";
}
}
?>
<!-------------------------------------------------------------->
음... 저도 초보라서 정확한 답변일지는 잘 모르겠습니다. 죄송 .... ^^;;;
얻어 와야하는데 해당 회원의 그룹명이 들어있는 테이블은 'g4_group_member' 테이블입니다.
따라서 'g4_group_member' 테이블에서 우선 해당 회원이 속한 그룹명들을 얻어오고
얻어온 그룹명에 속한 게시판들을 'g4_board' 테이블에서 얻어 옵니다. 얻어 온 게시판들의 목록보기
권한을 체크하여 해당 게시판의 링크가 출력될지 정해줘야 합니다.
아래 소스는 제가 내비도님의 글을 보고 제 생각대로 한번 코딩해본 소스입니다.
아직 PHP 초보라서 정확한 답변일지는 잘 모르겠지만 약간의 도움이라도 됐으면 하네여 ^^;
<!---------------------------------------------------------------->
<?
/* 'g4_group_member' 테이블에서 해당회원이 속한 그룹명 얻어오기 */
$sql = " select gr_id from g4_group_member where mb_id = '$member[mb_id]' ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
$i = 0;
while ($row = sql_fetch_array($result))
{
$list[$i][gr_id] = $row['gr_id'];
$i++;
}
?>
<?
for ($i = 0 ; $i < $total_count ; $i++)
{
// 그룹명 출력
echo "그룹명 : " . $list[$i][gr_id] . "<br>";
/* 얻어온 그룹 아이디로 'g4_board' 테이블에서 해당 그룹에 속한 게시판명(bo_table)과 게시판 목록보기 권한(bo_list_level), 게시판 제목(bo_subject)을 얻어옵니다. */
$sql_gr[$i] = " select bo_table, bo_list_level, bo_subject from g4_board where gr_id = '" . $list[$i][gr_id] . "' ";
$result_gr[$i] = sql_query($sql_gr[$i]);
$total_count_gr[$i] = mysql_num_rows($result_gr[$i]);
$i_gr = 0;
while ($row_gr[$i] = sql_fetch_array($result_gr[$i]))
{
$list_gr[$i][$i_gr][bo_table] = $row_gr[$i]['bo_table'];
$list_gr[$i][$i_gr][bo_list_level] = $row_gr[$i]['bo_list_level'];
$list_gr[$i][$i_gr][bo_subject] = $row_gr[$i]['bo_subject'];
$i_gr++;
}
for ($i_gr = 0 ; $i_gr < $total_count_gr[$i] ; $i_gr++)
{
// 회원의 레벨이 게시판 목록보기 권한보다 높을 경우에만 메뉴출력
if ($member[mb_level] > $list_gr[$i][$i_gr][bo_list_level])
echo "<a href=" . $g4[bbs_path] . "/board.php?bo_table=" . $list_gr[$i][$i_gr][bo_table] . ">" . $list_gr[$i][$i_gr][bo_table] . "</a><br>";
}
}
?>
<!-------------------------------------------------------------->
음... 저도 초보라서 정확한 답변일지는 잘 모르겠습니다. 죄송 .... ^^;;;