我基于数据库查询向用户呈现选项列表。结果正在被正确获取,但它们当前是无序的,我想在选项列表中按字母顺序显示它们。到目前为止,我已经在查询级别上使用“ORDER BY”尝试了几种解决方案,但没有成功。有没有一种简单的方法来实现这一目标? (该列表包含1000多个结果)代码如下:
<?php
$user_id = $_SESSION['user_id'];
$sql = "SELECT * FROM add_bulding WHERE description<>''";
$query = $this->db->query($sql);
$building_title = $query->result_array();
?>
<div>
<select>
<option value="">Select Building</option>
<?php foreach ($building_title as $value) { ?>
<option value = "<?php echo $value['id']; ?>">
<?php echo $value['title']; ?>
</option>
<?php
}
?>
</select>
</div>
答案 0 :(得分:0)
尝试将您的查询更改为:
$sql = "SELECT * FROM add_bulding WHERE description<>'' ORDER BY title DESC";
答案 1 :(得分:0)
听起来像是要查询:
SELECT id, title FROM add_bulding WHERE description<> ORDER BY title desc
或者,您可以在php中对其进行排序:
<?php
$tmp = array();
foreach ($building_title as $value){
$tmp[$value['id']] = $value['title'];
}
ksort($tmp);
foreach ($tmp as $k => $v) {
print "<option value=\"" + $k + "\">" + $v + "</option>\n";
}
?>
但是,在任何一种情况下,请务必清理您的值,以免最终导致XSS问题。
答案 2 :(得分:0)
尝试此查询:
$sql = "SELECT * FROM add_bulding WHERE description<>'' ORDER BY title";
如果您想按字母顺序获取标题数据,那么您可以编写&#39; ASC&#39;或者在ORDER BY标题之后不需要写任何东西。
但是你想要按降序获得标题数据然后你需要写“DESC&#39;在ORDER BY标题之后 我希望你能得到解决方案。