Codeigniter form_helper将数据库行作为选择菜单中的值

Udd*_*ers 2 php codeigniter

我正在写一个表单,其中有一个选择菜单,我希望从数据库中提取值,所以我认为这将是这样的:

我的看法

<?php
   echo form_open('admin/save_content');
   echo form_fieldset();
   echo form_dropdown('categories', $select_options);
   echo form_submit('category_submit', 'Submit');
   echo form_fieldset_close();
   echo form_close();
?>
Run Code Online (Sandbox Code Playgroud)

我的控制器

function add_content() {
    $data = array();
    $this->is_logged_in();
    $this->load->model('category_model');
    $data['select_options'] = $this->category_model->get_all_online();
    $this->load->view('admin/content/add_content', $data);
}
Run Code Online (Sandbox Code Playgroud)

我的模特

public function get_all_online() {
    $this->db->select('*');
    $this->db->from('category');
    $this->db->where('category_online', 1);
    $query = $this->db->get();

    return $query->result();

}
Run Code Online (Sandbox Code Playgroud)

现在,当我将$selected_options表单放入表单下拉时,我收到此错误,

遇到PHP错误

严重程度:4096

消息:类stdClass的对象无法转换为字符串

文件名:helpers/form_helper.php

行号:331

jfo*_*her 7

您需要将数组传递到下拉列表,其中数组键将是POST的值,值将显示为文本.

要实现此目的,请更改控制器,如下所示:

function add_content() {
        $data = array();
        $this->is_logged_in();
        $this->load->model('category_model');
        $data['select_options'] = $this->category_model->get_all_online_select();
        $this->load->view('admin/content/add_content', $data);
}
Run Code Online (Sandbox Code Playgroud)

并将此功能添加到您的模型

public function get_all_online_select() {
        $this->db->select('id, name'); //change this to the two main values you want to use
        $this->db->from('category');
        $this->db->where('category_online', 1);
        $query = $this->db->get();
        foreach($query->result_array() as $row){
            $data[$row['id']]=$row['name'];
        }
        return $data;
}
Run Code Online (Sandbox Code Playgroud)

这应该够了吧