접근 가능그룹 함수로 쉽게 사용하기 정보
접근 가능그룹 함수로 쉽게 사용하기본문
팁앤테크에 올릴만한 내용이 될지 몰라 그냥 혼자 만들어서 쓰다가 올려드려봅니다.
접근가능 게시판 그룹은 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 ";
...
접근가능 게시판 그룹은 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 ";
...
추천
0
0
댓글 1개
감사합니다.
접근 가능그룹 함수로 쉽게 사용하기 스크랩해 갑니다.
접근 가능그룹 함수로 쉽게 사용하기 스크랩해 갑니다.