我正在創建一個顯示行的頁面。每行有兩列,這是我的問題,評級和使用的關鍵。第一次加載頁面時,沒有預分頁,頁面顯示正常。代碼當它工作:MySQL ORDER BY與兩個列相加
if (!$sortby) {
$getdata = mysql_query("select * FROM traditional") or die(mysql_error());
while($data = mysql_fetch_array($getdata)){
$category = $data["category"];
$overview = $data["overview"];
$ratingcount = $data["ratingcount"];
$ratingscore = $data["ratingscore"];
$usage = $data["usage"];
$location = $data["location"];
$calculaterating = $ratingscore/$ratingcount;
if (!$calculaterating) {
$rating = "None";
} else {
$rating = $calculaterating;
}
echo "</tr>";
echo "<tr colspan='4'>";
echo "<td class='selectcategory' width='40%'>";
echo "<a href='$location'>$category</a>";
echo "</td>";
echo "<td class='categorymenu' style='vertical-align: middle; text-align: left;
padding: 5px;' width='40%'>";
echo $overview;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $rating;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $usage;
echo "</td>";
}
這裏的東西停止工作。頁面上有一個下拉菜單,允許用戶按照使用情況或評分進行排序。當他們選擇一個頁面刷新時,$ sortby通過評分或使用進行填充。下面是代碼的其餘部分,當事情停止時:
} else {
if ($sortby = "rating") {
$sort = "rating";
} else {
$sort = "`usage`";
}
$getdata = mysql_query("select category,overview,SUM(ratingscore/ratingcount) as
'rating',`usage`,location FROM traditional ORDER BY $sort DESC") or die(mysql_error());
while($data = mysql_fetch_array($getdata)){
$category = $data["category"];
$overview = $data["overview"];
$rating = $data["rating"];
$usage = $data["usage"];
$location = $data["location"];
echo "</tr>";
echo "<tr colspan='4'>";
echo "<td class='selectcategory' width='40%'>";
echo "<a href='$location'>$category</a>";
echo "</td>";
echo "<td class='categorymenu' style='vertical-align: middle; text-align: left;
padding: 5px;' width='40%'>";
echo $overview;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $rating;
echo "</td>";
echo "<td class='categorymenu' width='10%'>";
echo $usage;
echo "</td>";
}
}
當$ sortby未填充時,顯示大約10行。如果代碼不工作(當您嘗試對結果進行排序時),則只會顯示一行(不知道爲什麼?),並且顯示的一個評級行無法正確計算。我已經閱讀了許多其他類似的文章(這些文章幫助我製作了不正確的代碼,正如我現在所掌握的那樣)。但我想我只是不理解我從別人的帖子中得到的東西。
非常感謝您的幫助。
第二個選擇中的'rating'是不正確的。別名不應該是字符串(這就是'''將'rating'轉換爲''''的字符串,如果這是一個派生字段並且不存在於表中的字段中,那麼按'rating'排序將會失敗,列「錯誤 – 2013-02-16 05:15:44
不,這是我誤解了另一篇文章的代碼,我認爲這樣做會創建一個名爲rating的臨時」列「,至少我猜想那就是這樣做的,我只是兩列,我會第一次注意到這個作品)存儲爲評分數量和評分的總得分,這給我輸出的平均值,我只是無法弄清楚如何按平均輸出進行排序 – 2013-02-16 05:19:37
任何關於如何按照平均評分排序的建議,因爲它是在代碼部分中計算的 – 2013-02-16 05:21:32