G5 플러그인 자료실의 랭킹출력에서 기간을 정하고 싶습니다.
본문
https://sir.kr/g5_plugin/1353?sfl=wr_subject%7C%7Cwr_content&stx=%EB%9E%AD%ED%82%B9
위 링크의
랭킹 플러그인 인데요. 랭킹을 기간에 따라 정하고 싶습니다.
오늘/일간/월간 이렇게요..
어디를 만지면 될까요?
소스 첨부합니다
<?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 처리 하시면 원하시는 기능을 구현하실수 있을겁니다.
지금 쿼리문은 회원테이블을 가지고 처리한 부분이기 때문에 회원테이블은 전체 포인트 정보를 업데이트 관리되는 부분이기 때문에 쿼리문 부터 수정을 해주셔야 합니다.
답해주셔서 감사합니다.
모두 채택해드리고 싶은데 채택은 한분만 가능해서
가장 제가 원하는 기능에 접근해주신 플라이님 댓글을 채택해드리겠습니다.
저 같은 초보 개발자에겐 너무나 고마우신 분들입니다.
항상 감사합니다^^
답변을 작성하시기 전에 로그인 해주세요.