2014-01-16 52 views
0

具有相同的组名的多个记录,我想在笨从数据库填充select下拉与optgroup为我写了以下内容:显示笨

表:

+---+-------------+--------------+ 
|id | group_name | location_name| 
+---+-------------+--------------+ 
| 1 | top cities | Bangalore | 
| |    |    | 
| 2 | top cities | Chennai  | 
| |    |    | 
| 3 | big cities | Mumbai  | 
| |    |    | 
| 4 | small cities| mumbai  | 
| |    |    | 
| 5 | small cities| mumbai  | 
+---+-------------+--------------+ 

要求:

  <select id="location" name="location"> 
       <option value="" selected="selected">Select Location</option> 
       <optgroup label="top cities"> 
        <option value="Bangalore">Bangalore</option> 
        <option value="Chennai">Chennai</option> 
       </optgroup> 
       <optgroup label="big cities"> 
        <option value="Mumbai">Mumbai</option> 
       </optgroup> 
       <optgroup label="small cities"> 
        <option value="Mumbai">Mumbai</option> 
        <option value="Mumbai">Mumbai</option> 
       </optgroup> 
      </select> 

型号:

function get_location() { 
    $this->db->select('group_name,GROUP_CONCAT(location_name) AS locations'); 
    $this->db->order_by("group_name"); 
    $this->db->from('location'); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) { 
     foreach ($query->result() as $row) { 
      $data[] = $row; 
     } 
     return $data; 
    } 
    return false; 
} 

查看:

  <select id="location" name="location"> 
       <option value="" selected="selected">Select Location</option> 
       <?php 
       $CI = & get_instance(); 
       $CI->load->model('Common', 'Common', TRUE); 
       $results = $CI->Common->get_location(); 
       foreach ($results as $row) { 
        echo '<optgroup label="'.$row->group_name.'">'; 

        $location = explode(',', $row->locations); 
        foreach ($location as $loc) { 
         echo '<option value="'.$loc.'">'.$loc.'</option>'; 
        } 

        echo "</optgroup>"; 
       } 
       ?> 
      </select> 

但结果是不同的,那么我需要......

输出:

 <select id="location" name="location"> 
      <option value="" selected="selected">Select Location</option> 
      <optgroup label="top cities"> 
       <option value="Bangalore">Bangalore</option> 
       <option value="Chennai">Chennai</option> 
       <option value="Mumbai">Mumbai</option> 
       <option value="Mumbai">Mumbai</option> 
       <option value="Mumbai">Mumbai</option> 
      </optgroup> 
     </select> 

请帮助任何人...在此先感谢

+0

你能显示输出目前是什么? –

+0

我已经更新了输出的问题 –

回答

0

这是因为你的查询是错误的。您应该将以下行添加到您的查询中:

$this->db->group_by('group_name'); 

另一件事,你不应该从你的视图访问你的模型。您应该使用控制器从模型中获取数据并将其传递给视图。

+0

非常感谢你...先生... –

0

也尝试不同的

$this->db->distinct(); 

放在什么地方查询