Как заставить form_dropdown () показать выбранное значение в Codeigniter? - PullRequest
4 голосов
/ 07 сентября 2011

Я пытаюсь заполнить выпадающий список из базы данных.В моем файле просмотра у меня есть следующий код

$batch= $query ['batch']; // I pull this data from a separate model 
echo form_dropdown('shirts', $options, $batch);

Теперь в раскрывающемся списке все данные заполнены, но проблема в том, что я не получаю значение - «$ batch» автоматически выбирается при загрузке страницы.Интересно, что если я отображаю $ batch, в другом месте страницы отображаются правильные данные, что означает, что $ batch в порядке.

Вот мой контроллер

function update($id){
$this->load->model('mod_studentprofile');
             $data['query']= $this->mod_studentprofile->student_get($id);
             $data['options']= $this->mod_studentprofile->batchget();

             $data['tab'] = "Update Student Information";
                 $data['main_content']='update_studentprofile';
                 $this->load->view('includes/template',$data);
            }     

А вот моя модель

 function batchget() {

      $this->db->select('batchname');
       $records=$this->db->get('batch');

            $data=array();

                        foreach ($records->result() as $row)
                {
                    $data[$row->batchname] = $row->batchname;
                }

            return ($data);
        } 

Пожалуйста, помогите мне решить эту проблему.Я хочу, чтобы при загрузке страницы в раскрывающемся списке автоматически выбиралось значение «$ batch».

Заранее спасибо.

РЕДАКТИРОВАТЬ ... мою модель для student_get ($ id)

  function student_get($id)
    {
        $query=$this->db->get_where('student',array('studentid'=>$id));
        return $query->row_array();
    }      

Спасибо:)

Ответы [ 2 ]

6 голосов
/ 07 сентября 2011

Я думаю, что, вероятно, происходит то, что значение в $ batch может совпадать с тем, что отображается в раскрывающемся списке, но не с фактическим ключом в параметрах $ для этого конкретного параметра, который будет частью value = "" HTML.

например ...

// this wouldn't select 'foo' as you may be thinking
$options => array('0' => 'foo', '1' => 'bar');
$batch = 'foo';
echo form_dropdown('shirts', $options, $batch);

// this would select foo
$options => array('foo' => 'foo', 'bar' => 'bar');
$batch = 'foo';
echo form_dropdown('shirts', $options, $batch);

Редактировать в ответ на комментарий OP:

Метод batchget () выглядит так, как будто он возвращает ваш массив $ options в правильном формате иваш метод student_get () возвращает row_array.Похоже, что в представлении вы назначаете значение одного из ключей, возвращаемых методом student_get, выбранным значением, хранящимся в $ batch, который затем передается в качестве третьего аргумента в form_dropdown ().

Все это кажется правильным.Пока значение $ batch действительно является одним из ключей массива, который находится в $ options, тогда form_dropdown () будет устанавливать один из параметров раскрывающегося списка как выбранный.

1 голос
/ 07 сентября 2011

Отладка.

var_dump() $options, var_dump() $batch, посмотрите на два и посмотрите, где вы ошиблись.

Третий параметр должен быть значением ключа, а не значение метки.

Энтони Джек, вероятно, прав.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...