2014-01-16 1 views
0

Я хотел бы, чтобы заполнить select выпадающий список с optgroup из базы данных в CodeIgniter для этого я написал следующее:отображать несколько записей с одинаковым именем группы в CodeIgniter

Таблица:

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

СПАСИБО ВАС ОЧЕНЬ ... SIR ... –

0

также попробовать отличный

$this->db->distinct(); 

, где вы разместите запрос

Смежные вопросы