Codeigniter form_helper getting database rows to be values in select menu

后端 未结 6 2151
借酒劲吻你
借酒劲吻你 2021-01-07 00:49

I am writing a form, which has a select menu in it, I want the values to pulled from the database, so I thought it would be something along these lines:

My view

6条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-07 01:36

    I personally hate to make assumptions in my Models about how my data will be used as that is the job of the controller. If you add a MY_array_helper.php and paste this in:

    function array_to_select() {
    
    $args = func_get_args();
    
    $return = array();
    
    switch(count($args)):
    
        case 3:
            foreach ($args[0] as $itteration):
                if(is_object($itteration)) $itteration = (array) $itteration;
                $return[$itteration[$args[1]]] = $itteration[$args[2]];
            endforeach;
        break;
    
        case 2:
            foreach ($args[0] as $key => $itteration):
                if(is_object($itteration)) $itteration = (array) $itteration;
                $return[$key] = $itteration[$args[1]];
            endforeach;
        break;
    
        case 1:
            foreach ($args[0] as $itteration):
                $return[$itteration] = $itteration;
            endforeach;
        break;
    
        default:
            return FALSE;
        break;
    
    endswitch;
    
    return $return;
    

    }

    Then you can do something like this:

    function add_content() {
        $data = array();
        $this->is_logged_in();
        $this->load->model('category_model');
        $this->load->helper('array');
        $data['select_options'] = array_to_select($this->category_model->get_all_online(), 'id', 'title');
        $this->load->view('admin/content/add_content', $data);
    

    }

    That supports multi-dimensional arrays by passing in one or two keys, or single dimensional arrays by using the value as the value and the key.

    Eg: array_to_select(array('value1', 'value2')) gives array('value1'=>'value1', 'value2'=>'value2')

提交回复
热议问题