生成緩存靜態頁面時,如何基於複雜SQL查詢的內容動態重新排列六個PHP代碼塊?動態地重新排列SQL查詢結果上PHP代碼塊的顯示順序?
我有六個功能完全相同的PHP代碼塊(下面包含一個例子),每個代碼塊都顯示六場比賽中的前五名錶現。
我將PHP代碼包裝到function
中,但遇到SQL查詢失敗的問題。這是通過發送數據庫連接器變量作爲函數參數來解決的,而且最初的監督對於我來說是愚蠢的,因爲它是愚蠢的。
這裏是基本的SQL查詢,我設計用來爲六個遊戲中的一個遊戲產生一個平均分數,其他五個在功能上是相同的。
$my_var1 = mysqli_query($connection, "SELECT AVG(score) FROM (SELECT g1_score AS score FROM game_1) TMP");
這裏是代碼,自定義函數用於顯示六個前5分塊之一:
function t5_game_1($connection) {
print "<p>Game 1</p>\n";
print "<table style='margin: 0 auto;'>\n";
$count = 0;
$A = mysqli_query($connection, "
SELECT players.Pname
, game_1.g1_score
, game_1.DVN
FROM players
LEFT
JOIN game_1
ON players.PID = game_1.PID
WHERE game_1.g1_seen = 'Y'
ORDER
BY game_1.g1_score DESC
LIMIT 5
");
IF ($AA = mysqli_fetch_array($A)) {
do {
print "<tr><td class='w3-left-align'>{$AA[0]}</td><td class='w3-right-align'>{$AA[1]}</td>";
SWITCH ($AA[2]) {
CASE 1:
print "<td class='w3-theme-d5'>Advanced</td>\n";
break;
CASE 2:
print "<td class='w3-theme-d5'>Intermediate</td>\n";
break;
CASE 3:
print "<td class='w3-theme-d5'>Beginner</td>\n";
break;
DEFAULT:
print "<td class='w3-theme-d5'>Beginner</td>\n";
break;
}
$count++;
} while ($AA = mysqli_fetch_array($A));
}
IF ($count < 5) {
do {
print "<tr><td colspan='3'>[Your name could be here]</td></tr>\n";
$count++;
} while ($count < 5);
}
print "</table>\n";
}
更新:我發現我的答案的部分,有一個工作的解決方案,是一個kludge,請參閱下面的答案。
我會嘗試儘可能多地向數據庫查詢推送數據管理。您可以通過任何方式將簡化問題摘要添加到您的帖子中?我對實際問題是什麼感到困惑。 –
有問題嗎? – Strawberry
@JasonJoslin我可以試着簡化這個問題。我無法使用SQL查詢來構建HTML輸出。我需要能夠根據SQL查詢的結果安排來自PHP的六個顯示塊。 –