表单下拉列表给我索引而不是文本

时间:2016-11-05 15:47:28

标签: codeigniter

你能帮助一个新的Codeigniter学习者吗?由于某种原因,我的表单下拉列表给我索引作为输入 - >发布。我只需要选择文字。

模型

function get_items(){
        $this->db->select('item_name');
        $this->db->from('commissary_items');
        $query=$this->db->get();
        $result=$query->result();

            $item_names=array('-SELECT-');

            for($i=0;$i<count($result);$i++){
                array_push($item_names,$result[$i]->item_name);
            }

            return $item_names;
        }

查看

 <div class="form-group">
                <div class="row colbox">
                <div class="col-lg-4 col-sm-4">
                    <label for="item_name" class="control-label">Item</label>
                </div>
                <div class="col-lg-8 col-sm-8">
                    <?php
                    $attributes = 'class = "form-control" id = "item_name"';
                    echo form_dropdown('item_name',$item_name,set_value('item_name'),$attributes);?>
                    <span class="text-danger"><?php echo form_error('item_name'); ?></span>
                </div>
                </div>
            </div>

控制器

public function new_inventory(){
        $data['item_name']=$this->commissary_model->get_items();

        $this->form_validation->set_rules('date_added','Date Added','required');
        $this->form_validation->set_rules('item_name','Item Name','callback_combo_check');
        $this->form_validation->set_rules('quantity','Quantity','required');
        $this->form_validation->set_rules('amount','Amount','required|numeric');
        $this->form_validation->set_rules('username','User Name');

        if($this->form_validation->run()==FALSE){
            // $data="";
            $this->load->view('new_inventory_view',$data);
        }else{
            $data=array(
                    'date_added'=>@date('Y-m-d',@strtotime($this->input->post('date_added'))),
                    'item_name'=>$this->input->post('item_name'),
                    'quantity'=>$this->input->post('quantity'),
                    'amount'=>$this->input->post('amount'),
                    'username'=>$this->session->userdata('username')
                );
            $this->db->insert('add_inventory',$data);
            $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Item added to inventory.</div>');
            redirect('commissary/added_to_inventory');
        }
    }

而不是表单下拉列表中的“文本值”,我得到索引1或2或3或4或5等....谢谢。

1 个答案:

答案 0 :(得分:0)

这就是<select>选项的工作方式 - 返回select选项的value

如果您需要文字,则必须以不同的方式设置$item_names,并使index与文字相同。通过模型中的一些重组轻松完成。

function get_items()
{
  $this->db->select('item_name');
  $this->db->from('commissary_items');
  $query = $this->db->get();
  $result = $query->result();

  $item_names = array();

  foreach($result as $item)
  {
    $item_names[$item->item_name] = $item->item_name;
  }

  return $item_names;
}