我想按首字母字母顺序对自动完成建议进行排序。
现在看起来像这样:http://i.imgur.com/EevFyv2.png
如果我输入字母 C,我想显示这样的标签建议:
- C
- C++
- 事件目录
- 苹果脚本
- 蓝衣
代码:
$text = $mysqli->real_escape_string($_GET['term']);
$query = "SELECT * FROM autocomplete WHERE name LIKE '%$text%' ORDER BY name ASC";
$result = $mysqli->query($query);
$json = '[';
$first = true;
while($row = $result->fetch_assoc())
{
if (!$first) { $json .= ','; } else { $first = false; }
$json .= '{"value":"'.$row['name'].'"}';
}
$json .= ']';
echo $json;
我希望有人能提供帮助,在此先感谢。
最佳答案
你需要
SELECT *
FROM autocomplete
WHERE name LIKE '%$text%'
ORDER BY (name LIKE '$text%') DESC,
name ASC
第一个 ORDER BY 子句是一个 bool 值,当名称以 $text
开头时为 1
,否则为 0
,因此当您排序时按照 DESC
的顺序,以 $text
开头的值将被移到列表的前面(那些只包含它的其他地方将被移到末尾)。然后第二个子句再次按字母顺序对两个“子列表”进行排序。
关于php - 按首字母字母顺序对自动完成建议进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842531/