我正在使用Codeigniter编写一个小型应用程序,到目前为止遇到了一些问题!我有一个从数据库表中填充的下拉列表。下拉列表已填充并正确显示。但是,当我尝试将其内容(值)保存到新的数据库表时,它保存的是下拉列表中的位置,而不是显示的值。
视图中的部分表单:
<?php echo form_open('manage/create_sold_vehicle_record'); ?>
Registration Number
<br>
<?php echo form_dropdown('reg_no', $vehicle_list, 'large'); ?>
控制器的相关部分:
function sell_vehicle()
{
$this->load->helper('form');
$this->load->helper('url');
$id = $this->uri->segment(3);
$this->load->model('MVehicle','',TRUE);
$this->load->model('manage_model','',TRUE);
$vehicles_qry = $this->MVehicle->listSaleVehicles();
$vehicle_list = array();
foreach ($vehicles_qry->result() as $vehicle)
{
$vehicle_list[] = $vehicle->reg_no;
}
$data['vehicle_list'] = $vehicle_list;
$data['main_content'] = 'sell_stock_vehicle';
$this->load->view('includes/template', $data);
}
这是型号:
function create_sold_vehicle_record()
{
$new_vehicle_insert_data = array(
'reg_no' => $this->input->post('reg_no'), <-- This is saved to db, but is the position in dropdown list, not the value shown.
'sold_by' => $this->input->post('staff'),
'bought_by' => $this->input->post('customer'),
'sale_price' => $this->input->post('sale_price'),
'comm_rate' => $this->input->post('comm_rate'),
'total_comm' => $this->input->post('total_comm'),
'sale_date' => $this->input->post('date')
);
$insert = $this->db->insert('sold_vehicles', $new_vehicle_insert_data);
return $insert;
}
因此,它不是将"OU03XHC"保存为db中的reg_no值,而是保存"1"(或该值在下拉列表中的任何位置)。
$vehicle_list[]
需要是关联数组
$vehicle_list = array();
foreach ($vehicles_qry->result() as $vehicle)
{
$vehicle_list[$vehicle->reg_no] = $vehicle->reg_no;
}
现在form_dropdown()还会在下拉菜单html 中生成选项值(而不是0,1等)
更换
$vehicle_list = array();
foreach ($vehicles_qry->result() as $vehicle)
{
$vehicle_list[] = $vehicle->reg_no;
}
至
$vehicle_list = array();
foreach ($vehicles_qry->result() as $vehicle)
{
$vehicle_list[$vehicle->reg_value] = $vehicle->reg_no;
}
"$vehicle->reg_value"veriable是您希望存储在DB 中的值