我从数据库中提取数据以填充下拉列表。我正在处理更新表中数据的函数。当用户单击更新时,它会将它们带到一个表单中,其中填充了行中的数据,以便他们可以更新必要的信息。下拉框应具有所选表中的值。但是,当我加载页面时,它会显示一个多选选项框,并选择所有选项。
模型
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;
答案 0 :(得分:0)
我假设您正在使用Codeigniter 3(尽管我非常确定即使对于2.x也是如此)。
您不能像这样使用set_value:您将一个数组作为默认值传递给set_value,它将该数组作为form_dropdown函数的选定值返回,但是,如果您将数组作为第三个传递,那么这就是您的问题form_dropdown的参数将呈现多选。 这是官方的反抗form_dropdown 和set_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>