답변 1개
안녕하세요...
@개애비 님
제가 SIR에 실시간으로 접속해 있는게 아니다 보니 늦게 확인할 수 있는 점 너그러운 양해 부탁드립니다.
요청하신 부분을 반영하였고, 기능 까지 개선하여 코드를 공유하겠습니다.
조금만 더 다듬어서 최근 게시물 스킨에 다시 업로드 해야 겠습니다^0^
수정된 버전은 다음과 같습니다.
기존과 동일하게 아래 코드를 통째로 교체 해주시면 됩니다.
오늘도 행복한 하루 보내세요
채택은 잊지 마시구요^^
![]()
</span></p>
<p> </p>
<p><?php</p>
<p>include_once('./_common.php');</p>
<p> </p>
<p>// 날짜 간격 설정 (오늘과 비교할 과거 날짜, -1은 하루 전)</p>
<p>$days_ago = -1;</p>
<p> </p>
<p>// 오늘과 비교 날짜 계산</p>
<p>$today = date('Y-m-d');</p>
<p>$compare_date = date('Y-m-d', strtotime($days_ago.' days'));</p>
<p> </p>
<p>// 출력 인원수</p>
<p>$limit = 10;</p>
<p> </p>
<p>// 제외할 아이디</p>
<p>$exclude_ids_array = ['webmaster', 'test3'];</p>
<p>$exclude_ids = implode("','", $exclude_ids_array);</p>
<p> </p>
<p>// 오늘의 총 포인트와 오늘 획득 포인트를 가져오는 쿼리</p>
<p>$sql_today = "</p>
<p> SELECT</p>
<p> m.mb_id,</p>
<p> m.mb_nick,</p>
<p> m.mb_point as total_points,</p>
<p> IFNULL(SUM(CASE WHEN DATE(p.po_datetime) = '{$today}' THEN p.po_point ELSE 0 END), 0) as today_points</p>
<p> FROM</p>
<p> {$g5['member_table']} m</p>
<p> LEFT JOIN</p>
<p> {$g5['point_table']} p ON m.mb_id = p.mb_id</p>
<p> WHERE</p>
<p> m.mb_id NOT IN ('{$exclude_ids}')</p>
<p> GROUP BY</p>
<p> m.mb_id</p>
<p> ORDER BY</p>
<p> m.mb_point DESC</p>
<p> LIMIT {$limit}</p>
<p>";</p>
<p>$today_result = sql_query($sql_today);</p>
<p> </p>
<p>// 어제의 총 포인트를 가져오는 쿼리</p>
<p>$sql_compare = "</p>
<p> SELECT</p>
<p> m.mb_id,</p>
<p> m.mb_point - IFNULL(SUM(CASE WHEN DATE(p.po_datetime) = '{$today}' THEN p.po_point ELSE 0 END), 0) as yesterday_points</p>
<p> FROM</p>
<p> {$g5['member_table']} m</p>
<p> LEFT JOIN</p>
<p> {$g5['point_table']} p ON m.mb_id = p.mb_id</p>
<p> WHERE</p>
<p> m.mb_id NOT IN ('{$exclude_ids}')</p>
<p> GROUP BY</p>
<p> m.mb_id</p>
<p> ORDER BY</p>
<p> yesterday_points DESC</p>
<p>";</p>
<p>$compare_result = sql_query($sql_compare);</p>
<p> </p>
<p>// 비교 날짜의 랭킹과 포인트를 계산</p>
<p>$compare_ranking = [];</p>
<p>$compare_points = [];</p>
<p>$rank = 1;</p>
<p>while ($row = sql_fetch_array($compare_result)) {</p>
<p> $compare_ranking[$row['mb_id']] = $rank++;</p>
<p> $compare_points[$row['mb_id']] = (float)$row['yesterday_points'];</p>
<p>}</p>
<p> </p>
<p>// 순위 변동 계산 함수</p>
<p>function get_rank_change($mb_id, $current_rank, $compare_ranking) {</p>
<p> if (isset($compare_ranking[$mb_id])) {</p>
<p> $compare_rank = $compare_ranking[$mb_id];</p>
<p> $change = $compare_rank - $current_rank;</p>
<p> if ($change > 0) {</p>
<p> return "<span style='color:green'>▲ {$change}</span>";</p>
<p> } elseif ($change < 0) {</p>
<p> return "<span style='color:red'>▼ " . abs($change) . "</span>";</p>
<p> } else {</p>
<p> return "-";</p>
<p> }</p>
<p> } else {</p>
<p> return "<span style='color:blue'>New</span>";</p>
<p> }</p>
<p>}</p>
<p>?></p>
<p><style></p>
<p> .ranking-container {</p>
<p> max-width: 800px;</p>
<p> margin: 0 auto;</p>
<p> padding: 20px 0;</p>
<p> }</p>
<p> .ranking-title {</p>
<p> background: #6f809a;</p>
<p> color: #fff;</p>
<p> text-align: center;</p>
<p> padding: 12px;</p>
<p> font-size: 1em;</p>
<p> margin: 0 0 20px;</p>
<p> border-radius: 4px;</p>
<p> }</p>
<p> .ranking-table {</p>
<p> background: #fff;</p>
<p> border-radius: 8px;</p>
<p> box-shadow: 0 2px 8px rgba(0,0,0,0.1);</p>
<p> overflow: hidden;</p>
<p> }</p>
<p> .ranking-table ul {</p>
<p> display: flex;</p>
<p> align-items: center;</p>
<p> padding: 15px 10px;</p>
<p> border-bottom: 1px solid #eee;</p>
<p> margin: 0;</p>
<p> }</p>
<p> .ranking-table ul:first-child {</p>
<p> background: #f8f9fa;</p>
<p> font-weight: 600;</p>
<p> border-bottom: 2px solid #e9ecef;</p>
<p> }</p>
<p> .ranking-table ul:last-child {</p>
<p> border-bottom: none;</p>
<p> }</p>
<p> .ranking-table ul:hover:not(:first-child) {</p>
<p> background: #f8f9fa;</p>
<p> }</p>
<p> .ranking-table li {</p>
<p> flex: 1;</p>
<p> text-align: center;</p>
<p> white-space: nowrap;</p>
<p> overflow: hidden;</p>
<p> text-overflow: ellipsis;</p>
<p> padding: 0 5px;</p>
<p> }</p>
<p> .ranking-table li:first-child {</p>
<p> flex: 0 0 8%;</p>
<p> }</p>
<p> .ranking-table li:last-child {</p>
<p> flex: 0 0 10%;</p>
<p> }</p>
<p> .point-change-positive {</p>
<p> color: #28a745;</p>
<p> }</p>
<p> .point-change-negative {</p>
<p> color: #dc3545;</p>
<p> }</p>
<p></style></p>
<p> </p>
<p><div class="ranking-container"></p>
<p> <h2 class="ranking-title">포인트 랭킹</h2></p>
<p> <div class="ranking-table"></p>
<p> <ul></p>
<p> <li>순위</li></p>
<p> <li>닉네임</li></p>
<p> <li>어제 포인트</li></p>
<p> <li>오늘 포인트</li></p>
<p> <li>변동 포인트</li></p>
<p> <li>총 포인트</li></p>
<p> <li>순위변동</li></p>
<p> </ul></p>
<p> <?php</p>
<p> $rank = 1;</p>
<p> while ($row = sql_fetch_array($today_result)) {</p>
<p> $mb_id = $row['mb_id'];</p>
<p> $mb_nick = $row['mb_nick'];</p>
<p> $total_points = (float)$row['total_points'];</p>
<p> $today_points = (float)$row['today_points'];</p>
<p> $yesterday_points = isset($compare_points[$mb_id]) ? $compare_points[$mb_id] : 0;</p>
<p> $point_change = $today_points;</p>
<p> $rank_change = get_rank_change($mb_id, $rank, $compare_ranking);</p>
<p> </p>
<p> $point_change_class = $point_change >= 0 ? 'point-change-positive' : 'point-change-negative';</p>
<p> $point_change_symbol = $point_change >= 0 ? '+' : '';</p>
<p> </p>
<p> echo "<ul>";</p>
<p> echo "<li>{$rank}</li>";</p>
<p> echo "<li>{$mb_nick}</li>";</p>
<p> echo "<li>" . number_format($yesterday_points) . "</li>";</p>
<p> echo "<li>" . number_format($total_points) . "</li>";</p>
<p> echo "<li class='{$point_change_class}'>{$point_change_symbol}" . number_format($point_change) . "</li>";</p>
<p> echo "<li>" . number_format($total_points) . "</li>";</p>
<p> echo "<li>{$rank_change}</li>";</p>
<p> echo "</ul>";</p>
<p> </p>
<p> $rank++;</p>
<p> }</p>
<p> ?></p>
<p> </div></p>
<p></div></p>
<p>
답변에 대한 댓글 5개
[code]
$point_change_class = $point_change >= 0 ? 'point-change-positive' : 'point-change-negative';
$point_change_symbol = $point_change >= 0 ? '+' : '';
[/code]
요기 바로 밑에 넣어주세요
[code]
$mb = get_member($mb_id);
$member_name = get_sideview($mb['mb_id'], $mb['mb_nick'], $mb['mb_email'], $mb['mb_homepage']);
[/code]
그리고 이름 부분을 찾아주세요
[code]
echo "<li>{$mb_nick}</li>";
[/code]
아래처럼 변경 해주세요
[code]
echo "<li>{$member_name}</li>";
[/code]
잘 되는 것 테스트 했습니다.
https://sir.kr/g5_plugin/13259
업로드 하였습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인