如何修改PHP代码实现SA:MP赌场玩家winnings总额统计展示?
解决方案:按玩家汇总赌场赢钱总额并展示
要实现按玩家汇总赢钱总额,核心是修改SQL查询语句,通过GROUP BY分组并使用SUM()计算总额,同时调整表格展示内容:
1. 修改SQL查询
将原查询替换为按玩家分组、计算总赢额的语句,并按总额降序排序(让赢最多的玩家排在最前面):
$w = Config::$g_con->prepare("SELECT `Username`, SUM(`Cash`) AS TotalWinnings FROM `logspacanea` GROUP BY `Username` ORDER BY TotalWinnings DESC");
2. 调整表格结构
由于汇总后不需要单条记录的时间(data字段),需要移除表格中的Data列:
- 删除表头中的
<th>Data</th> - 删除表格行中的
<td>'.$user->data.'</td>
3. 更新输出逻辑
修改循环内的输出,展示玩家用户名和总赢额:
完整修改后的代码
<div class="panel" style="padding: 10px"> <?php if(!isset(Config::$_url[1])) { $w = Config::$g_con->prepare("SELECT `Username`, SUM(`Cash`) AS TotalWinnings FROM `logspacanea` GROUP BY `Username` ORDER BY TotalWinnings DESC"); $w->execute(); ?> <table class="table table-minimal"> <thead> <tr> <th>USER</th> <th>Total Cash Winnings</th> </tr> </thead> <tbody> <?php $id = 1; while($user = $w->fetch(PDO::FETCH_OBJ)) { echo ' <tr> <td>'.Config::formatName($user->Username).'</td> <td>'.$user->TotalWinnings.'</td> </tr> '; $id++; } ?> </tbody> </table> <?php } else { } ?> </div>
补充说明
- 如果需要保留玩家的最新赢钱时间,可以在SQL中添加
MAX(data) AS LastWinDate,并在表格中新增对应列展示 - 若
Cash字段带有货币符号(如$)或千分位分隔符,需要确保字段是数值类型才能正确求和;如果是字符串类型,需先清理符号再转换为数值计算(例如使用SUM(REPLACE(REPLACE(Cash, '$', ''), '.', ''))处理格式)
内容的提问来源于stack exchange,提问作者GodlikeIGH
相关产品推荐
相关产品推荐

