我正在创建一个显示行的页面。每行有两列,这是我的问题,评级和使用的关键。第一次加载页面时,没有预分页,页面显示正常。代码当它工作: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