2015-07-13 75 views
1

我要構建一個調查表單生成器。表格中的name屬性是來自數據庫的動態。所以我不知道任何輸入元素的name。從數據庫中,我已經生成了表單及其工作,但是我提交多個複選框值並存儲到數據庫時遇到問題。處理codeigniter中的多個複選框陣列

我想:

查看

// $inputtype, $name comes from database. 
<input type="$inputtype" name="$name"[]> 
// I can fetch values of all checked option and loop through it and convert it into string using explode and insert into database. Thats not a big deal. 

但是,問題是name屬性是從數據庫的動態。在運行時我不知道name attr。所以我不能做$this->input->post("checkbox_name");。因此,我通過創建運行時窗體所需的數據庫字段,將表單數據直接插入到數據庫中。並通過這樣插入表單數據:

$this->input->post(); //directly to model. 

但是,當我試圖插入多個複選框陣列相同的方式,它會拋出錯誤Array to string conversion在笨庫mysql/mysql_driver.php。我該如何克服這個問題。請幫忙。

更新

陣列I表單提交後得到$this->input->post()

array 
'first_name' => string 'sushil ' (length=7) 
'last_name' => string 'shrestha' (length=8) 
'gen' => string 'Male' (length=4) 
'hobbies' => 
    array 
    0 => string 'gaming' (length=6) 
    1 => string 'football' (length=8) 
    2 => string 'cricket' (length=7) 
'language' => string 'IOS' (length=3) 

但我的愛好陣列不存儲直接到數據庫中。

+0

嘗試'$ postdata = $ this-> input-> post(); print_r($ postdata);' –

+0

這給了我所有具有鍵值對的表單數據的數組。在多個複選框的情況下它使表單數據數組內的另一個子數組。 – user254153

+0

然後發佈該數組,在這裏你會得到你的'複選框'的名稱attr –

回答

0

如果你想以這種方式存儲愛好,你應該總是使用與你的用戶表相關的外鍵。意味着你的hobby表包含用戶的愛好。即使用用戶ID,tbl_hobbies.id