这将是一个令人困惑的问题。我将尝试解释它并提供尽可能多的信息。基本上,我所拥有的是一个网站,人们可以上传他们在游戏中获得的杀戮量。我想做的是,在排行榜上显示人们的综合,确认杀人事件。这比我预期的更难(LOL)。
这是我的数据库的样子:
submission
是条目的唯一ID。
usergt
是用户的gamertag。
image
并不重要。
userkilled
是他们杀死的人。
status
是确认杀人的状态。
conftotal
是我们从图像中确认的总杀戮(例如,条目5记录了24次杀戮)。
submitted
只是提交日期和时间的unix时间戳。
这是我页面上的PHP:
<?php
function getKills($gamertag) {
$conn = new mysqli("localhost", "rpsanet_seals", "k_,2N2Xbu}mr", "rpsanet_seals");
if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);}
$sql = "SELECT conftotal FROM kills WHERE usergt='" . $gamertag . "'";
$result = $conn->query($sql);
$ctotalklls = 0;
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$ctotalklls = $ctotalklls + $row["conftotal"];
}
} else {
$ctotalklls = 0;
}
return $ctotalklls;
$conn->close();
}
?>
<div class="mykills_content">
<table class="mykills_table">
<tr>
<th class="mk_first">Avatar</th>
<th>Gamertag</th>
<th>Latest Victim</th>
<th class="mk_last">Total Kills</th>
</tr>
<?php
$conn = new mysqli("localhost", "rpsanet_seals", "k_,2N2Xbu}mr", "rpsanet_seals");
if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);}
$sql = "SELECT *, COUNT(*) AS magnitude
FROM kills
WHERE status='confirmed'
GROUP BY usergt
ORDER BY magnitude ASC
LIMIT 5";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo '
<tr>
<td class="mykills_submission" data-submission="' . $row["submission"] . '">
<div class="mykills_avatar">
<img src="https://avatar-ssl.xboxlive.com/avatar/' . $row["usergt"] . '/avatarpic-l.png" class="mykills_victim_avatar" draggable="false" />
</div>
</td>
<td>
' . $row["usergt"] . '
</td>
<td>
' . $row["userkilled"] . '
</td>
<td>
' . getKills($row["usergt"]) . '
</td>
</tr>
';
}
echo '</table>';
} else {
echo '</table><div class="fw-nokills">You have not submitted any kills yet.</div>';
}
$conn->close();
?>
</div>
</div>
这就是它在页面上的样子:
我不知道我做错了什么或如何解决它。如您所见,订单不正确。它应该是CheapApples12,然后是KILLER C00KIE X,然后是ancrobbo97。
如果还有其他任何不清楚的地方,或者需要任何其他信息,请发表评论,我会尽快将其发送给任何人......
我提前感谢任何帮助:)
重要信息:上面屏幕截图中显示的“Total Kills”是从getKills()函数生成的,而不是数据库查询结果。
答案 0 :(得分:1)
尝试使用sum(conftotal)
这个简单的单行使用,并按sum(conftotal)
SELECT *,sum(conftotal) as totalkills FROM kills WHERE status='confirmed' GROUP BY usergt ORDER BY totalkills desc
答案 1 :(得分:0)
SELECT x.avatar, x.gamertag, x.magnitude AS magnitude FROM
( SELECT avatar,gamertag, COUNT(*) AS magnitude
FROM kills
WHERE status='confirmed'
GROUP BY usergt
LIMIT 5
) AS x
ORDER BY magnitude ASC
我无法测试我写的内容,但我认为你可以从中得到逻辑。 使用子查询较慢,但它们非常强大。
答案 2 :(得分:0)
据我所知,您希望根据TotalKills计数显示降序,请尝试使用以下查询。
"SELECT *, COUNT(ref_column_name) AS magnitude
FROM kills
WHERE status='confirmed'
GROUP BY usergt
ORDER BY magnitude desc"