채택완료
G5 플러그인 자료실의 랭킹출력에서 기간을 정하고 싶습니다.
https://sir.kr/g5_plugin/1353?sfl=wr_subject%7C%7Cwr_content&stx=%EB%9E%AD%ED%82%B9
위 링크의

랭킹 플러그인 인데요. 랭킹을 기간에 따라 정하고 싶습니다.
오늘/일간/월간 이렇게요..
어디를 만지면 될까요?
소스 첨부합니다
Copy
<?phpinclude_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개 / 댓글 4개
채택된 답변
+20 포인트
이것은 회원의 전체 point 기준으로 가져오는 부분이기 때문에 오늘/일간/월간이라 한다면 포인트 DB테이블에서 날짜 검색을 해서 sum카운트를 해서 그 구문을 가지고 order by로 정렬하셔서 가져오셔야 할듯 합니다.
회원아이디별 그룹을 처리해서 sum으로 한후 order by 처리 하시면 원하시는 기능을 구현하실수 있을겁니다.
지금 쿼리문은 회원테이블을 가지고 처리한 부분이기 때문에 회원테이블은 전체 포인트 정보를 업데이트 관리되는 부분이기 때문에 쿼리문 부터 수정을 해주셔야 합니다.
답변에 대한 댓글 3개
답변을 작성하려면 로그인이 필요합니다.
포인트 db 에 접근하는 방식이 아닌 회원 테이블을 가지고 와서 하는 부분이였군요..
그렇죠. 회원 테이블에는 현재 포인트가 있으니까요 ㅠㅠ
아직 sql 문은 잘 모르지만 막막했었는데
대략 어떤 구조로 처리해야하는지는 잘 알겠습니다.
답변 고맙습니다^^