将2d数组从控制器传递到codeigniter中的模型

时间:2013-12-18 05:30:44

标签: jquery mysql arrays json codeigniter

我有一个表单,它获取访问类型名称(文本框),描述(文本框)及其相应的功能(选中的复选框)。访问类型名称和描述保存在表中,并且还有另一个表,用于访问类型id和函数。

access_type_id   |   function_id
      1          |        1
      1          |        2

到目前为止,我有一系列已检查的复选框,这些复选框通过ajax传递给控制器​​。该数组看起来像[1,2],其中1和2是已选中复选框的ID。

$('#thisForm').on('submit', function() {
    var functionArray = $.map($('input:checkbox:checked'), function(e, i) {
        return +e.value;
    });

    var string = $.ajax({
            url: 'checkFields',
            async: false,
            dataType: "json",
            type: 'POST',
            data: {'acfFunctions': functionArray}
    });
});

在控制器中我试图创建一个数组数组但是当我将它传递给模型时,会发生错误。我该如何解决这些问题。提前谢谢。

  

JSON.parse:意外字符

     

array_keys()期望参数1为数组,给定整数

public function checkFields() {
    $data= array(
        'access_type_name' => trim(ucwords($this->input->post('accessName'))),
        'access_type_description' => trim(ucwords($this->input->post('accessDescription')))
    );

    $id = $this->home_model->saveAccessType($data); 
    //This is working. It really returns the id.
    $acfFunctions = $this->input->post('acfFunctions');

    $i=0;
    $data2 = array();
    for($i; $i<count($acfFunctions); $i++){
        $data2[$i]=array(
            $data2['access_type_id'] = $id, 
            $data2['function_id'] = $acfFunctions[$i]
        );
    }

    $this->home_model->saveAccessTypeFunction($data2);
    redirect('home/setPermissions');
}

这是模型

public function saveAccessTypeFunction($data){
    $result=$this->db->insert_batch('access_type_function',$data);
    if($result){
        return $data;   
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

您必须更改以下代码。您必须在数据数组中提及要插入到db表中的字段名称。

  

for($ i; $ i&lt; count($ acfFunctions); $ i ++)

     

{

    $data2[$i]=array(
        'access_type_id' => $id, // access_type_id is table field name
        'function_id' => $acfFunctions[$i]
    );
}

供参考:CI Tutorial