我的同事已经整理了一个输出以下数组的SQL select:
Array
(
[0] => Array
(
[total_completion_time] => 163
[promotion_id] => 1
[challenge_id] => 1
[userId] => 2
[display_name] => laxadmin
[completion_time] => 163
[completion_time_mins] => 0
[completion_time_secs] => 0
[completion_time_mmss] => 0:0
[score] => 40
)
[1] => Array
(
[total_completion_time] => 345
[promotion_id] => 1
[challenge_id] => 1
[userId] => 1
[display_name] => siteadmin
[completion_time] => 345
[completion_time_mins] => 5
[completion_time_secs] => 45
[completion_time_mmss] => 5:45
[score] => 50
)
[2] => Array
(
[total_completion_time] => 345
[promotion_id] => 1
[challenge_id] => 1
[userId] => 3
[display_name] => mdeville
[completion_time] => 345
[completion_time_mins] => 0
[completion_time_secs] => 0
[completion_time_mmss] => 0:0
[score] => 0
)
[3] => Array
(
[total_completion_time] => 943
[promotion_id] => 1
[challenge_id] => 1
[userId] => 4
[display_name] => Matthew DeVille
[completion_time] => 163
[completion_time_mins] => 2
[completion_time_secs] => 43
[completion_time_mmss] => 2:43
[score] => 90
)
[4] => Array
(
[total_completion_time] => 943
[promotion_id] => 1
[challenge_id] => 3
[userId] => 4
[display_name] => Matthew DeVille
[completion_time] => 90
[completion_time_mins] => 1
[completion_time_secs] => 30
[completion_time_mmss] => 1:30
[score] => 30
)
[5] => Array
(
[total_completion_time] => 943
[promotion_id] => 1
[challenge_id] => 4
[userId] => 4
[display_name] => Matthew DeVille
[completion_time] => 90
[completion_time_mins] => 1
[completion_time_secs] => 30
[completion_time_mmss] => 1:30
[score] => 35
)
[6] => Array
(
[total_completion_time] => 943
[promotion_id] => 1
[challenge_id] => 5
[userId] => 4
[display_name] => Matthew DeVille
[completion_time] => 300
[completion_time_mins] => 5
[completion_time_secs] => 0
[completion_time_mmss] => 5:0
[score] => 30
)
[7] => Array
(
[total_completion_time] => 943
[promotion_id] => 1
[challenge_id] => 6
[userId] => 4
[display_name] => Matthew DeVille
[completion_time] => 300
[completion_time_mins] => 5
[completion_time_secs] => 0
[completion_time_mmss] => 5:0
[score] => 20
)
)
他还提供了以下代码来循环结果并创建一个包含以下标题的表:
用户| 挑战1次| 挑战2次| 挑战3次| 挑战4次| 挑战5次| 挑战6次| 挑战7次| 总时间|
<?php
for ($x=0; $x < $results_length; $x++) {
$row = $results[$x]; // get next row from results
$userId = $row["userId"]; // get userId from row
// by default, we'll expect to continue to build UI display for current user
$beginNewUserDisplay = false;
if ($userId !== $currentUserId) {
// if not first user, we need to close the current table row
if ($currentUserId != -1) {
// if we haven't filled in one table cell for each possible result
// do that now...
while ($challengesCtr <= $TOTAL_CHALLENGES_CT) {
// this means we're missing results we need
// to properly display the table so we add in blank cells
echo "<td></td>";
$challengesCtr = $challengesCtr+1;
}
// display total time
// TODO: verify this is the correct display value
echo "<td>".$row["total_completion_time"]. "-" .$row['userId']."</td>";
echo "</tr>";
}
// Regardless, we need to start a new table row
// no more results for previous user, starting UI display for new user
$currentUserId = $userId;
$beginNewUserDisplay = true;
// reset the results counter
$challengesCtr = 1;
}
if ($beginNewUserDisplay == true) {
// start UI for new User's results
echo "<tr>";
echo "<td>".$row['userId']."</td>";
echo "<td>".$row['display_name']. "-" .$row['userId']."</td>";
} else {
// continue UI for current User's results
$challengeId = $row["challenge_id"];
while ($challengesCtr < $challengeId) {
// if this executes it means we're missing results
// we need to properly display the table so we add in blank cells
echo "<td></td>";
$challengesCtr = $challengesCtr+1;
}
// echo table cell current challenge time here
// TODO: verify this is the correct display value
echo "<td>".$row['completion_time_mmss']."</td>";
// increment our results counter
$challengesCtr = $challengesCtr+1;
}
}
?>
问题是循环正在跳过大多数第一个用户的数据,而且表中缺少最后两列。
您可以在此处查看结果:http://65.242.11.205/leaderboard/
我通常可以找出嵌套的循环,但是这个让我瘫痪了。
答案 0 :(得分:0)
好像你没有设置第一个$ currentUserId。它有助于看到SQL I recon,因为它可能与连接有关,或者SQL是设计的。