2013-11-01 1 views
2

Я использую CI-форму с помощью вспомогательного помощника form_dropdown и пытался вытащить данные Mysql в свои параметры, начиная с нижеследующего кода, и только извлекает последнюю запись из db в список опций?Выпадающее окно Codeigniter только извлекает последние данные из db

, пожалуйста, сообщите, что не так с моим кодом?

Модель

public function getStates() { 
    $query = $this->db->get('states'); 
    $return = array(); 

    if($query->num_rows() > 0){ 
     $return[''] = 'please select'; 
     foreach($query->result_array() as $row){ 
      $return[$row['state_id']] = $row['state_name']; 
     } 
    } 
    return $return; 
} 

Контроллер

$this->load->model('db_model'); 

$data['options'] = $this->db_model->getStates(); 

$this->load->view('create_new', $data); 

Посмотреть

$state = array(
'name' => 'state', 
'id' => 'state', 
//'value' => set_value('state', $state) 
); 

<?php echo form_label('State', $state['id']); ?> 
<?php echo form_dropdown($state['name'], $options); ?> 
<?php echo form_error($state['name']); ?> 
<?php echo isset($errors[$state['name']])?$errors[$state['name']]:''; ?> 
+0

У вас есть ошибки? каков был результат? – vijaykumar

+0

Может ли быть, что все ваши строки имеют один и тот же 'state_id' и переопределяют друг друга? Какое значение дает '$ query-> num_rows()' give? –

ответ

0

отправить полный результат запроса от мо дель с точки зрения, как этот

Модель

public function getStates() { 
    $query = $this->db->get('states'); 
    return $query->result(); 
} 

пусть контроллер, как это и теперь вы можете заполнить состояния в раскрывающемся меню, как это:

Посмотреть

<?php 
foreach($options as $opt){ 
    $options[$opt->state_id]=$opt->state_name; 
} 
echo form_dropdown($state['name'], $options); 
?> 
+0

Я получаю эту ошибку: 'Объект класса stdClass не может быть преобразован в строку' – conmen

+0

изменить' echo form_dropdown ($ state ['name'], $ options); 'to' echo form_dropdown ($ options [0] -> state_name , $ options); ' – user1888781

0

Попробуйте следующее:

function getStates() { 
    $return = array(); 
    $query = $this->db->get('states')->result_array(); 
    if(is_array($query) && count($query) > 0){ 
     $return[''] = 'please select'; 
     foreach($query as $row){ 
      $return[$row['state_id']] = $row['state_name']; 
     } 
    } 
    return $return; 
}