그누보드 추천트리 (회원조직도) 수정

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
그누보드 추천트리 (회원조직도) 수정

QA

그누보드 추천트리 (회원조직도) 수정

본문

안녕하세요
항상 고수님들의 도움을 받고 있는 애용자입니다

개별회원에게 생성된 링크로 하위회원이 가입하면 자동으로 추천 트리가 형성되는 <추천 트리도>를 운영하고 있습니다


아래 그림과 같은 형식으로 표현됩니다

 

1040037313_1593190831.4336.jpg

 

 

그런데 회원이 증가하다보니 너무 꼬리를 물고 모든회원이 표현되어
각 회원은  자신으로 부터 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

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 126,530 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT