希望有人可以帮我解决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对数组进行重新排序,如果是这样,有人可以将我指向初学者的级别(我讨厌称自己为中级!)教程如何解决它?
我希望我不会像上次那样引发任何争论! : - )
干杯,
安迪。
答案 0 :(得分:0)
在您的SQL查询中,您有:
ORDER BY categories_name
但是,在填充下拉列表的代码中,您有:
<option value="' . $row['categories_name'] . '">' . $row['categories_id'] . '</option>
您正在显示categories_id
,但按categories_name
排序,因此用户无法看到生成的下拉菜单。
答案 1 :(得分:0)
使用它: ORDER BY categories_id
答案 2 :(得分:0)
尝试以下查询: “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”
或
“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”