G5 플러그인 자료실의 랭킹출력에서 기간을 정하고 싶습니다.

G5 플러그인 자료실의 랭킹출력에서 기간을 정하고 싶습니다.

QA

G5 플러그인 자료실의 랭킹출력에서 기간을 정하고 싶습니다.

본문

https://sir.kr/g5_plugin/1353?sfl=wr_subject%7C%7Cwr_content&stx=%EB%9E%AD%ED%82%B9

위 링크의

 

63c642bcc55785d589545616e362d3f1_1488766097_5911.jpg

 

랭킹 플러그인 인데요. 랭킹을 기간에 따라 정하고 싶습니다.

오늘/일간/월간 이렇게요..

 

어디를 만지면 될까요?

 

소스 첨부합니다

 


<?php
include_once("./_common.php");
?>
<style type="text/css">
.pl_rank2{clear:both;position:relative;margin:0 auto;width:100%; }
.pl_rank2 h2{padding:0 10px;height:28px;line-height:2.4em;background:#6a6e87;color:#fff}
.pl_rank2_ul{padding:3px 0 0}
.pl_rank2_ul ul{float:left;width:100%;margin:0;padding:0;overflow:hidden;list-style:none}
.pl_rank2_ul ul li{position:relative;line-height:18px;margin:5px 0; }
.pl_rank2_ul ul li .rank_bg{display:inline-block;width:17px;height:17px;margin-right:8px;text-align:center;color:#fff;background:#b3b8c0;text-indent:-1px;border-radius:2px}
.pl_rank2_ul ul li .rank_bg1{color:#fff;background:#da0000}
.pl_rank2_ul ul li .rank_bg2{color:#fff;background:#fdb800}
.pl_rank2_ul ul li .rank_bg3{color:#fff;background:#657bc8}
.pl_rank2_ul ul li .rank_point{display:inline-block;position:absolute;top:0;right:2px;font-family:verdana;color:#C02027;font-size:11px;font-weight:bold}
</style>
<div style="width:100%; height:290px; padding:10px; border:3px solid #dddddd; background: #F6F6F6;">
    <div class="pl_rank2">
    인기 픽스터 Best 10 
    <div class="pl_rank2_ul">
    <ul>
    <?php
    // $sql_common = " and mb_id != '{$config[cf_admin]}' "; 최고 관리자만 비노출
    $sql_common = " and mb_level < 9 "; // 9레벨 이하만 노출
    $rank_rows = 10; //출력 수
    $sql = " select * from {$g5[member_table]} where mb_point > '{$row[mb_point]}' {$sql_common} order by mb_point desc, mb_today_login desc limit {$rank_rows} ";
    $result = sql_query($sql);
    for ($i=0; $row=sql_fetch_array($result); $i++) {
        $rank = number_format($i + 1);
        //$name = get_sideview($row['mb_id'], $row['mb_nick'], $row['mb_email'], $row['mb_homepage']);
        $name = $row['mb_nick'];
        $mbid = $row['mb_id'];
        $point = number_format($row['mb_point']);
        if ($rank == 1) {
            $rank_bg = ' rank_bg1';
        } else if ($rank == 2) {
            $rank_bg = ' rank_bg2';
        } else if ($rank == 3) {
            $rank_bg = ' rank_bg3';
        } else {
            $rank_bg = '';
        }
    ?>
    <?php
    //게시물수 뽑기 
 $results = sql_query(" SELECT bo_table FROM $g5[board_table] "); 
  $mbid2 = $row['mb_id'];
  $all_com = 0; 
  $all_art= 0; 
  $i2=0; 
    while ($row13 = sql_fetch_array($results)) { 
    
 $i2++; //테이블수 
    //총게시물 
    //$gul_su="select count(wr_is_comment) as ctt from g5_write_$row13[bo_table] where wr_is_comment='0' "; 
    
    //총코멘트 
    //$co_su="select sum(wr_is_comment) as ctt2 from g5_write_$row13[bo_table] where wr_is_comment='1' ";  
    //회원의 글수
    $gul_su="select count(wr_is_comment) as ctt from g5_write_$row13[bo_table] where wr_is_comment='0' and mb_id = '$mbid2' "; 
    //회원의 코멘트수
    $co_su="select sum(wr_is_comment) as ctt2 from g5_write_$row13[bo_table] where wr_is_comment='1' and mb_id = '$mbid2' "; 
    
    //게시물 
    $article = sql_fetch($gul_su); 
    $article_su=$article[ctt]; 
    $all_art= $all_art +$article_su; 
    
    //코멘트 
    $comm= sql_fetch($co_su); 
    $comm_su=$comm[ctt2]; 
    $all_com = $all_com+$comm_su; 
 } 

?>
        <li><a href="<?php echo G5_BBS_URL ?>/board.php?bo_table=01_04&sca=&frame=&sfl=wr_name%2C1&sop=and&stx=<?php echo $name ?>"><span class="rank_bg<?php echo $rank_bg; ?>"><?php echo $rank; ?></span><?php echo $name; ?><span class="rank_point "><span style="color:#002CDC;"><?=number_format($all_art)?>S</span>  <?php echo $point; ?>P</span></a></li>
    <?php } ?>
    </ul>
    </div>
    </div>
</div>

 


 

이 질문에 댓글 쓰기 :

답변 3

이것은 회원의 전체 point 기준으로 가져오는 부분이기 때문에 오늘/일간/월간이라 한다면 포인트 DB테이블에서 날짜 검색을 해서 sum카운트를 해서 그 구문을 가지고 order by로 정렬하셔서 가져오셔야 할듯 합니다.

 

회원아이디별 그룹을 처리해서 sum으로 한후 order by 처리 하시면 원하시는 기능을 구현하실수 있을겁니다.

 

지금 쿼리문은 회원테이블을 가지고 처리한 부분이기 때문에 회원테이블은 전체 포인트 정보를 업데이트 관리되는 부분이기 때문에 쿼리문 부터 수정을 해주셔야 합니다.

플라이님 답변 감사합니다^^

포인트 db 에 접근하는 방식이 아닌 회원 테이블을 가지고 와서 하는 부분이였군요..
그렇죠. 회원 테이블에는 현재 포인트가 있으니까요 ㅠㅠ

아직 sql 문은 잘 모르지만 막막했었는데
대략 어떤 구조로 처리해야하는지는 잘 알겠습니다.
답변 고맙습니다^^

https://sir.kr/cmall/1471350880

 

https://sir.kr/g4_skin/98767 

작은별님 안녕하세요! 자료 올려주신 분이시네요^^

저도 그림자밟기 님께서 올려주신 자료 봤는데요

한가지 아쉬운 부분이

작은별님이 올리신 자료에는 게시물과 코멘트를 뽑아오는 부분이 있는데
그림자밟기님의 자료엔 그 부분이 없더라구요..

어차피 해당 자료를 구입해도 또 QnA에 남겨야 하는 부분이라서
이렇게 QnA 에 글을 남기게 되었습니다.

우선 올려주신 랭킹 플러그인 잘쓰고 있습니다.
항상 감사합니다^^

답해주셔서 감사합니다.

모두 채택해드리고 싶은데 채택은 한분만 가능해서

가장 제가 원하는 기능에 접근해주신 플라이님 댓글을 채택해드리겠습니다.

 

저 같은 초보 개발자에겐 너무나 고마우신 분들입니다.

항상 감사합니다^^ 

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

회원로그인

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