그누보드 추천트리 (회원조직도) 수정
본문
안녕하세요
항상 고수님들의 도움을 받고 있는 애용자입니다
개별회원에게 생성된 링크로 하위회원이 가입하면 자동으로 추천 트리가 형성되는 <추천 트리도>를 운영하고 있습니다
아래 그림과 같은 형식으로 표현됩니다
그런데 회원이 증가하다보니 너무 꼬리를 물고 모든회원이 표현되어
각 회원은 자신으로 부터 12대까지만 표현되도록 하고,
다만 최고 관리자는 전체 계보를 볼수 있도록 수정하고 싶은데 어디를 손대야 할지 모르겠습니다
조언을 부탁드립니다
감사합니다
1) 추천트리 스킨 php 입니다
<?php
if(!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<!-- 트리조직도 시작 { -->
<table class="wfull">
<tr>
<td class="vat w200">
<?php
@include_once(G5_PATH.'/mypage_left.php');
?>
</td>
<td class="vat padl10">
<div id="mypage">
<h1><span>마이페이지 (<?php echo $g5['title']; ?>)</span></h1>
<h3>[하위회원 트리조직도]</h3>
</div>
<div class="local_ov">
<?php if($config['cf_mytree_blind']) { ?>
※ 회원 정보보호를 위해 <strong>아이디</strong>를 공개하지 않습니다.
<?php } else { ?>
<?php } ?>
</div>
<div class="wfull">
<?php
function mb_tree($mb_recommend, $level, $line_array, $pre_cnt=0)
{
global $g5, $member;
$sql = "select count(*) as cnt from {$g5['member_table']} where mb_recommend = '$mb_recommend' ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
$sql = "select * from {$g5['member_table']} where mb_id = '$mb_recommend' ";
$row = sql_fetch($sql);
$blank = "";
for($i=0; $i<($level-1); $i++){
if($line_array[$i]==0)
$blank .=" ";
else {
$blank .= "<img src='/img/tree/line.gif'> ";
}
}
if($level!=0) {
if($pre_cnt==0){
if($total_count==0)
$blank .= "<img src='/img/tree/join1.gif'> ";
else
$blank .= "<img src='/img/tree/minus1.gif'> ";
} else {
if($total_count==0)
$blank .= "<img src='/img/tree/join2.gif'> ";
else
$blank .= "<img src='/img/tree/minus2.gif'> ";
}
}
echo '<tr height="15"><td nowrap>';
$r = sql_fetch("select * from {$g5['member_table']} where mb_id = '$mb_recommend' ");
$mb_level = get_level($r['mb_level']);
$mb_hp = hyphen_hp_number($r['mb_hp']);
$sql2 = "select count(*) as cnt
from {$g5['member_table']}
where mb_recommend = '$mb_recommend' ";
$row2 = sql_fetch($sql2);
$member_count = $row2['cnt'];
if($member_count > 0) { $sly = 'fc_547'; } else { $sly = 'fc_red'; }
if($mb_recommend == $member['mb_id']) {
$mb_id = $mb_recommend;
} else {
if($config['cf_mytree_blind']) {
$mb_id = get_id_blind($mb_recommend);
} else {
$mb_id = $mb_recommend;
}
}
echo $blank.'<strong>'.$r['mb_name'].' <span class="'.$sly.'">('.$member_count.')</span></strong> | '.$mb_id;
echo '</td></tr>';
if($total_count <= 0)
return;
$pre_cnt = $total_count;
$sql = "select mb_id
from {$g5['member_table']}
where mb_recommend = '$mb_recommend' order by mb_no asc ";
$result = sql_query($sql);
while($row = sql_fetch_array($result))
{
$pre_cnt--;
if($pre_cnt == 0)
$line_array[$level] = 0;
else
$line_array[$level] = 1;
mb_tree($row['mb_id'], $level+1, $line_array, $pre_cnt);
}
}
?>
<div style="width:786px;border:1px #cfd6e6 solid;table-layout:fixed;">
<div style='overflow-x:auto; overflow-y:auto;width:100%;min-height:400px;'>
<table class="wfull">
<tr>
<td style='padding:12px'>
<div style='padding:3px 0 0 0'>
<table>
<?php
$line_array = array();
mb_tree($member['mb_id'], 0, $line_array);
?>
</table>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
</td>
</tr>
</table>
<!-- } 트리조직도 끝 -->
답변 2
코드를 테스트해 보기전에는 어렵겠지만, 대충 봤을 때 2가지 방법이 있을 것 같습니다.
1. SQL에서 읽어 올때 회원 최대 12개까지 읽어 오는 방법과 Admin은 전체를 다 읽고
2. 다 읽어오고 화면에 표시할 때, 회원은 12개로 정해주는 방법이 있을 것 같습니다.
아마도 $pre_count = 12 로
ajax 롤 실시간 클릭해서 하부를 불러오도록 하면 최적의 조직도가 됩니다.
https://github.com/jzaefferer/jquery-treeview">https://github.com/jzaefferer/jquery-treeview