CodeIgniter显示多选而不是下拉列表

时间:2016-01-02 21:10:07

标签: php mysql codeigniter

我从数据库中提取数据以填充下拉列表。我正在处理更新表中数据的函数。当用户单击更新时,它会将它们带到一个表单中,其中填充了行中的数据,以便他们可以更新必要的信息。下拉框应具有所选表中的值。但是,当我加载页面时,它会显示一个多选选项框,并选择所有选项。

模型

public function edit_recrew()
{
    $this->load->model('atisroad_model');
    $this->data['record'] = $this->atisroad_model->edit_recrew();
    $this->data['train_status'] = $this->atisroad_model->trainstatusli();
    $this->data['train_direction'] = $this->atisroad_model->traindirli();
    $this->load->view('atis/edit_recrew', $this->data);
}

查看

        <tr>
        <td>Train Direction:</td>
        <td><?=form_dropdown('train_direction', $train_direction, set_value('train_direction', $train_direction));?>
</td>
    </tr>
<tr>
        <td>Train Status:</td>
        <td> <?=form_dropdown('train_status', $train_status, set_value('train_status', $train_status));?>
    </tr>

控制器

public function edit_recrew()
{
    $this->db->where('train_id', $this->uri->segment(3));
    $query = $this->db->get('trains_road');
    return $query->result();
}
public function trainstatusli()
{
    $result = $this->db->get('train_status');
    $return = array();
    if($result->num_rows() > 0){
        foreach($result->result_array() as $row) {
            $return[$row['status']] = $row['status'];
        }
    }
    return $return;
}
public function traindirli()
{
    $result = $this->db->get('train_direction');
    $return = array();
    if($result->num_rows() > 0){
        foreach($result->result_array() as $row) {
            $return[$row['direction']] = $row['direction'];
        }
    }
    return $return;

2 个答案:

答案 0 :(得分:0)

我假设您正在使用Codeigniter 3(尽管我非常确定即使对于2.x也是如此)。

您不能像这样使用set_value:您将一个数组作为默认值传递给set_value,它将该数组作为form_dropdown函数的选定值返回,但是,如果您将数组作为第三个传递,那么这就是您的问题form_dropdown的参数将呈现多选。 这是官方的反抗form_dropdownset_value

答案 1 :(得分:0)

我更改了第三个参数中的值,并且它有效。

<tr>
   <td>Train Direction:</td>
   <td><?=form_dropdown('train_direction', $train_direction, $value->train_direction));?>
   </td>
</tr>
<tr>
   <td>Train Status:</td>
   <td> <?=form_dropdown('train_status', $train_status, $value->train_status);?>
</tr>