【发布时间】:2012-10-28 01:13:41
【问题描述】:
希望有人可以帮助我解决 MySQL/PHP 排序问题。
我正在做的事情的简要概述如下:
我有三个(链接的)选择框。第一个框的输出是“固定的”(它包含我商店中的所有顶级类别)。随后的两个框根据前一个框中的选择填充...标准,简单的东西,我听到你说!
这一切都很好,最后一个框中的选择(字符串)被附加到“搜索结果”页面——正是我需要的。我的问题是在尝试组织第二个和第三个框的排序顺序时出现。
这是我的代码示例:
public function ShowType()
{
$sql = "SELECT categories.*, categories_description.categories_name FROM categories, categories_description WHERE categories.categories_id = categories_description.categories_id AND categories.parent_id = $_POST[category] ORDER BY categories_name";
$res = mysql_query($sql,$this->conn);
$type = '<option value="0">Select...</option>';
while($row = mysql_fetch_array($res))
{
$type .= '<option value="' . $row['categories_name'] . '">' . $row['categories_id'] . '</option>';
}
return $type;
}
Ajax 替换了(灰色,不可点击)
<option value="0">Select...</option>
部分到
<option value="' . $row['categories_name'] . '">' . $row['categories_id'] . '</option>
一旦做出选择(在前一个框中)。
我的问题是激活框后显示的数组不是按字母顺序排列的。我想按categories_name对选择框中的输出进行排序,但是无论我在MySQL查询中尝试什么,它都不会有!
我的“动态”标签的输出是否因为 Ajax 更新的方式而未排序?我是否需要使用 PHP 重新排序数组,如果需要,有人可以将我指向初学者的水平(我不想称自己为中级!)请教如何去做?
我希望我不会像上次那样引发更多争论! :-)
干杯,
安迪。
【问题讨论】:
-
Please, don't use
mysql_*functions in new code。它们不再维护,deprecation process 已开始使用。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial. -
dev.mysql.com/doc/refman/5.0/en/select.html 的哪一部分没有引领您走向成功?您在查询数据库时对值进行排序。
-
感谢您的链接,Hakre。我将看看如何替换
mysql_*函数。我尝试对 MySQL 查询中的值进行排序(我尝试了许多不同的 SORT BY 值,但似乎没有任何作用!)但我也会从你的第二篇文章中阅读你的链接。 -
它被称为
ORDER BY而不是SORT BY。检查mysql_query返回 FALSE,这是错误的。然后用mysql_error显示错误。另见stackoverflow.com/a/12770072/367456 -
对不起,那只是我在回复中使用了错误的术语。在我的代码中,我使用了
ORDER BY。但是指出这样的小错别字有助于将来记住事情!如果我从现在开始在代码中输入SORT BY,我会记住这篇文章的! :D