повторное заполнение списка выбора, сгенерированного из базы данных в codeigniter - PullRequest
0 голосов
/ 04 марта 2012

Привет. У меня есть форма, в которой я использую form_validation. Если пользователь делает какую-либо ошибку (оставляя некоторые обязательные поля пустыми), пользователь перенаправляется обратно в форму, и форма повторно заполняется. Все работает, кроме моего выбора, который генерируется из базы данных.

Вот мой код из вида:

echo "<select name='parentid'" . set_value("parentid"). ">";
echo '<option value = "0">None</option>';
foreach ($faq_categories as $row => $option) {
    echo "<option value=" . $option['catid'] . ">" . $option['categoryname']. "</option>";
}
echo '</select>';

Вот мой код контроллера:

 public function displayAddFaqCategoryForm($error = null)
    {
        $data['title'] = "Add new FAQ Category";
        $data['main_content'] = 'addFaqCategory';
        $selectWhat = array('tname' => 'faq_categories',
                            'sortby'=> 'catid',
                            'how'   => 'asc'
                            );
        $this->load->model('selectRecords');
        $data['faq_categories'] = $this->selectRecords->selectAllRecords($selectWhat);
        $this->load->vars($data);
        $this->load->view('backOffice/template');
    } // end of function displayAddFaqCategoryForm 

А вот код модели:

 public function selectAllRecords($selectWhat = array())
    {
        $data = array();
        $tname = $selectWhat['tname'];
        $sortby = $selectWhat['sortby'];
        $how = $selectWhat['how'];
        $this->db->order_by($sortby,$how);
        $query = $this->db->get($tname);
        if($query->num_rows() > 0) 
        {
            foreach($query->result_array() as $row) 
            {
                $data[] = $row;  
            }
        }
        $query->free_result();
        return $data;
    } // end of function selectAllRecords 

Я не получаю никаких сообщений об ошибках, только выбор не заполняется последним использованным. Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 04 марта 2012

Вы используете set_value() неправильно

echo "<select name='parentid'" . set_value("parentid"). ">";

Он предназначен для вывода фактического значения (для ввода текста).Это выдает что-то вроде:

<select name='parentid'ActualValue>

Это не то, как элемент <select> заполняется, и это недопустимый HTML.Правильное использование см. В документах Помощник по формам .

. Вы можете использовать set_select(), и это будет продолжаться.здесь вы можете использовать несколько других возможностей с вашим кодом, чтобы быть в безопасности (всегда).

Если это слишком много, вы можете быть заинтересованы в form_dropdown() функция.

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