我正在创建一个显示行的页面。每行有两列,这是我的问题,评级和用法。首次加载页面时,没有预先排序,页面显示正常。工作时间的代码:
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行。如果代码不起作用(当一个人试图对结果进行排序时),只显示一行(不知道为什么?),并且显示的一个评级行无论如何都不能正确计算。我已经阅读了一些其他的帖子,这些帖子有点处理(这种帮助我制作了糟糕的代码,因为我现在有了它)。但我想我只是不理解我从别人的帖子中得到的东西。
答案 0 :(得分:0)
最好你可以选择if else进行查询...这样你就可以使用简单的ORDER BY查询..和echo查询生成的输出。
答案 1 :(得分:0)
SUM
是一个聚合运算符,如果不使用GROUP BY
,则会将整个结果集合并为一行,其中result
设置为所有行结果的总和。< / p>
我不确定你为什么要使用SUM
,如果你想要添加排序的第一个查询中的行相同,那应该是这样的;
SELECT category, overview, ratingscore / ratingcount AS rating,
`usage`, location FROM traditional ORDER BY $sort DESC
如果我误解了您想要的结果集,请告诉我,但SUM
没有GROUP BY
肯定不是您想要的结果。