테스트 사이트 - 개발 중인 베타 버전입니다

접근 가능그룹 함수로 쉽게 사용하기

팁앤테크에 올릴만한 내용이 될지 몰라 그냥 혼자 만들어서 쓰다가 올려드려봅니다.

접근가능 게시판 그룹은 gr_id 값들만 알면 되므로 저의 경우에는
아래 만든 함수 중 get_allow_group_array와 array_to_string_element를 활용하여
SELECT ~ WHERE ~ IN 으로 활용하여 간결하게 바꾸려는 목적으로 만들었었는데요...
MySQL 4.1 이상 버전이라면 서브쿼리를 쓰면 되겠지만 사용하고 있는게 4.0 버전이라 안되는 것도 있고 또 사용가능하다고 해도 너무 길게 지저분해질것 같아서 활용해봤죠...
제가 사용하는 예제는 맨 아래에 넣어드릴께요.

=====
/////
// 접근가능 게시판 그룹 함수
// array function get_allow_group_array(void)
// string function array_to_string_element($allow_group_array [, $sp_string=", "])
// bool function is_allow_group($groupname, $allow_group_array)
// bool function allow_group_count($allow_group_array)
/////

// 접근가능 게시판 그룹을 배열로 리턴
function get_allow_group_array()
{
  global $g4, $is_admin, $member;
  if ($is_admin != "super")
        $sql .= "SELECT a.gr_id FROM $g4[group_table] AS a LEFT JOIN $g4[group_member_table] AS b ON a.gr_id = b.gr_id WHERE (b.mb_id = '$member[mb_id]' AND a.gr_use_access = '1' ) OR a.gr_use_access = '0' ORDER BY a.gr_10, a.gr_id ";
  else
    $sql .= "SELECT gr_id FROM $g4[group_table] ORDER BY gr_id ";

  $result = sql_query($sql);
  for ($i=0; $row=sql_fetch_array($result); $i++) $allow_group[$i] .= "$row[gr_id]";
  return $allow_group;
}

// 1차원 배열을 스트링으로 변환
// $sp_string값은 접근그룹명 사이에 구분값
function array_to_string_element($allow_group_array, $sp_string=", ")
{
  $i=0;
  foreach ($allow_group_array as $element) $in_element .= ($i++==0 ? "'$element'" : $sp_string. "'$element'");
  return $in_element;
}

// 접근가능그룹인지 확인
function is_allow_group($groupname, $allow_group_array)
{
  return in_array($groupname, $allow_group_array);
}

// 접근가능그룹의 갯수 리턴
function allow_group_count($allow_group_array)
{
  return count($allow_group_array);
}

=====
활용예 : /bbs/new.php

[수정전]
...
$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c
    where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' ";
...
$sql = " select gr_id, gr_subject from $g4[group_table] order by gr_id ";
...

[수정후]
...
$sql_allow_group = array_to_string_element(get_allow_group_array());
$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c
    where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' and b.gr_id in ($sql_allow_group) ";
...
$sql = " select gr_id, gr_subject from $g4[group_table] where gr_id in ($sql_allow_group) order by gr_id ";
...

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 1개

감사합니다.
접근 가능그룹 함수로 쉽게 사용하기 스크랩해 갑니다.

게시판 목록

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.
글쓰기
🐛 버그신고