我正在开发一个人们可以提交不同主题的网站的小型下载区域,社区可以使用+或 - 1(非常类似于Stack Overflow)对它们进行评级。
我目前正在从MySQL数据库中提取数据 - 其中大部分内容对于这个问题并不是非常重要 - 但这是我的最终代码和表格的样子:
while($record = mysql_fetch_array($myData)){
echo '<tr>';
echo '<td>' . $record['votes'] . '</td>';
echo '<td>' . $record['name'] . '</td>';
echo '<td>' . $record['author'] . '</td>';
echo '<td>' . $record['description'] . '</td>';
echo '</tr>';
}
我想根据名为<td>
的{{1}}的值来订购每个表格行。我知道这有点宽,因为我没有提供代码,但我在网上搜索并没有发现我正在尝试做什么。我确信可以通过修改votes
函数来完成,但我不确定如何。
如果它被证明是任何帮助,我的完整PHP代码如下:
while
编辑:当我研究这个时,我显然正在寻找错误的东西 - 我不知道mySQL具有以下答案中描述的功能。现在我知道了什么,这可能是一个可能的重复 - mysql query order by multiple items
答案 0 :(得分:4)
最简单的选择是将责任传递给数据库级别。这也是最好的选择,因为您可以添加索引;数据库引擎非常擅长查询和排序结果。将an ORDER BY
clause添加到您的查询中,进行查询:
SELECT *
FROM themer
ORDER BY votes
要从最高到最低订购,您需要撤消排序顺序。通过添加DESC
关键字来执行此操作:
SELECT *
FROM themer
ORDER BY votes DESC
注意:新代码应该不再使用mysql_
PHP函数了。它们已被弃用,for good reason。好的选择包括mysqli和PDO。
答案 1 :(得分:0)
$sql = 'SELECT * FROM themer
ORDER BY ABS(votes) DESC';