2016-06-09 31 views
-1

我正在基于数据库查询向用户展示一个选项列表。结果正在被正确提取,但是它们目前是无序的,我想在选项列表中按字母顺序显示它们。到目前为止,我已经在查询级别尝试了几种解决方案,但没有成功。有没有简单的方法来实现这一点? (该列表包含1000次以上的结果)的代码如下:基于MySQL查询的选项列表 - PHP

<?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> 
+2

ORDER BY标题应该工作 – Mihai

+2

通过查询添加顺序应该给你正确的顺序。请通过查询显示您的订单,以及数据的一小部分,以及为什么它是错误的 –

回答

0

试着改变你的查询:

$sql = "SELECT * FROM add_bulding WHERE description<>'' ORDER BY title DESC"; 
+0

谢谢这工作完美 – 1dxb

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问题。如果你想获得与字母顺序,那么你可以写“ASC”或不需要ORDER BY标题后写任何标题数据

$sql = "SELECT * FROM add_bulding WHERE description<>'' ORDER BY title"; 

0

尝试此查询。

但是你想以降序得到标题数据,那么你需要在ORDER BY title 之后写'DESC'我希望你能得到解决方案。