접근 가능그룹 함수로 쉽게 사용하기
팁앤테크에 올릴만한 내용이 될지 몰라 그냥 혼자 만들어서 쓰다가 올려드려봅니다.
접근가능 게시판 그룹은 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 ";
...
댓글 1개
20년 전
감사합니다.
접근 가능그룹 함수로 쉽게 사용하기 스크랩해 갑니다.
접근 가능그룹 함수로 쉽게 사용하기 스크랩해 갑니다.
게시판 목록
그누4 팁자료실
그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.
나누면 즐거움이 커집니다.
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 269 | 19년 전 | 8982 | ||
| 268 | 19년 전 | 5347 | ||
| 267 | 19년 전 | 3362 | ||
| 266 | 19년 전 | 10956 | ||
| 265 | 19년 전 | 6328 | ||
| 264 | 19년 전 | 5782 | ||
| 263 |
|
19년 전 | 6176 | |
| 262 |
|
19년 전 | 6667 | |
| 261 | 19년 전 | 6459 | ||
| 260 | 19년 전 | 4781 | ||
| 259 | 19년 전 | 4847 | ||
| 258 | 19년 전 | 3800 | ||
| 257 | 19년 전 | 3213 | ||
| 256 | 19년 전 | 4407 | ||
| 255 | 19년 전 | 3882 | ||
| 254 | 19년 전 | 10906 | ||
| 253 | 19년 전 | 6108 | ||
| 252 | 19년 전 | 7623 | ||
| 251 | 19년 전 | 6808 | ||
| 250 | 19년 전 | 3869 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기