我正在写一个表单,其中有一个选择菜单,我希望从数据库中提取值,所以我认为这将是这样的:
我的看法
<?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
您需要将数组传递到下拉列表,其中数组键将是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)
这应该够了吧