포인트 랭킹관련 채택완료

안녕하세요

 

https://gnustudy.com/bbs/board.php?bo_table=gnu_pds&wr_id=8&sfl=wr_subject%7C%7Cwr_content&stx=%EB%9E%AD%ED%82%B9+%EC%88%9C%EC%9C%84&sop=and

 

해당 php 파일로 활용하려고 하는데요 아래 이미지 처럼 어떤 아이디로 로그인해서 봐도

순위가 468위로 표기되는데요 상단 sql 조회 부분이 문제인건지 확인 부탁드리겠습니다

 

 

2943663001_1656765049.2296.png

 

 

Copy
<?php

include_once("./_common.php");

$g5['title'] = '회원 포인트 랭킹';

include_once(G5_THEME_PATH.'/head.php');

?>

<style type="text/css">

#po_rank {position:relative;margin:0 auto;width:100%}

#po_rank h2 {background:#f7f7f7;border:1px solid #d6d6d6;padding:14px 10px;font-size:12px;color:#4c4e4d}

#po_rank .my_rank {position:absolute;top:16px;right:10px;color:#666666;font-size:11px}

#po_rank .my_rank strong {color:#ff6600}

#po_rank .tbl_rank {margin:5px 0 20px}

#po_rank .tbl_rank table {width:100%;border-collapse:collapse;border-spacing:0}

#po_rank .tbl_rank caption {padding:0;font-size:0;line-height:0;overflow:hidden}

#po_rank .tbl_rank thead th {height:30px;line-height:30px;border-bottom:1px solid #129d82;background:#f4f4f4;color:#383838;font-size:11px;font-weight:normal;text-align:center}

#po_rank .tbl_rank .th_point {text-align:right;padding-right:10px}

#po_rank .tbl_rank td {border-top:1px solid #eceff3;border-bottom:1px solid #eceff3;line-height:23px;word-break:break-all}

#po_rank .tbl_rank tr:hover{background:#f8f8f8}

#po_rank .tbl_rank tr:first-child{background:#ecf7f8}

#po_rank .tbl_rank a {}

#po_rank .td_prank {width:30px;text-align:center;color:#ffffff}

#po_rank .td_pname {text-align:left;padding-left:5px}

#po_rank .td_joindate {width:120px;text-align:center;color:#b1b1b1}

#po_rank .td_plevel {width:25px;text-align:center}

#po_rank .td_point {width:70px;text-align:right;padding-right:10px;color:#d41d4b;font-family:verdana;font-size:10px;font-weight:bold}

#po_rank .rank_num {position:relative;margin:4px 0}

#po_rank .rank_num .rank_bg{display:inline-block;width:21px;line-height:22px;font-size:11px;text-align:center;color:#fff;text-indent:-1px}

</style>

 

<div id="po_rank">

<h2>회원 포인트 랭킹 TOP-100</h2>

<div class="my_rank">

<?php

$sql_common = " and mb_id != '{$config['cf_admin']}' ";

if ($member['mb_id']) {

    $sql = " select count(mb_id) as cnt from {$g5['member_table']} where (1) {$sql_common} order by mb_point desc ";

    $row = sql_fetch($sql);

    echo "{$member['mb_nick']} 님의 포인트는 <strong>".number_format($member['mb_point'])."점</strong>, 순위는 <strong>".number_format($row['cnt'] + 1)."등</strong> 입니다";

}

?>

</div>

<div class="tbl_rank">

<table>

<caption>포인트 랭킹</caption>

<thead>

<tr>

    <th>순위</th>

    <th>닉네임</th>

    <th>가입일</th>

    <th>레벨</th>

    <th class="th_point">포인트</th>

</tr>

</thead>

<tbody>

<?php

$rank_rows = 50; //출력 수

$sql = " select * from {$g5['member_table']} where (1) {$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'];

$level = $row['mb_level'];

$joindate = date("y.m.d", strtotime($row['mb_datetime']));

$point = number_format($row['mb_point']);

 

if ($rank == 1) {

$bg = '#da0000';

} else if ($rank == 2) {

$bg = '#fdb800';

} else if ($rank <= 5) {

$bg = '#657bc8';

} else {

$bg = '#b3b8c0';

}

?>

<tr>

    <td class="td_prank"><div class="rank_num"><span class="rank_bg" style="background:<?php echo $bg ?>"><?php echo $rank; ?></span></div></td>

    <td class="td_pname"><?php echo $name; ?></td>

    <td class="td_joindate"><?php echo $joindate; ?></td>

    <td class="td_plevel"><?php echo $level; ?></td>

    <td class="td_point"><?php echo $point; ?></td>

</tr>

<?php } ?>

</tbody>

</table>

</div>

</div>

<?php

include_once(G5_THEME_PATH.'/tail.php');

?>

답변 1개

채택된 답변
+20 포인트
Copy
$sql = " select count(mb_id) as cnt from {$g5['member_table']} where (1) {$sql_common} order by mb_point desc ";
를 아래로 수정하시고 
Copy
$sql = " select count(mb_id) as cnt from {$g5['member_table']} where (1) {$sql_common} and mb_point >= '{$member['mb_point']}' order by mb_point desc ";
number_format($row['cnt']) +1을 빼보세요.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다:)

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고