2012-11-28 37 views
1

我是codeigniter的新手,並嘗試從單個表單捕獲多個值來更新我的數據庫。Codeigniter數組捕獲POST行變量的多行

這裏是控制器:

public function update_tb_table_test(){ 

     $tb_items = $_POST; 
    }  

和視圖:

<thead> 
       <tr> 
        <th>Payment ID</th> 
        <th>Customer ID</th> 
        <th>Date</th> 
     </thead> 
      <tbody> 
       <tr> 
        <td><input type="text" name="update" id="comment_plog" /></td> 
        <td><input type="text" name="update2" id="ar_id" /></td> 
        <td><input type="text" name="update3" id="date" /></td> 
       </tr> 
       <tr> 
        <td><input type="text" name="update" id="comment_plog" /></td> 
        <td><input type="text" name="update2" id="ar_id" /></td> 
        <td><input type="text" name="update3" id="date" /></td> 
       </tr> 
       <tr> 
        <td><input type="text" name="update" id="comment_plog" /></td> 
        <td><input type="text" name="update2" id="ar_id" /></td> 
        <td><input type="text" name="update3" id="date" /></td> 
       </tr> 
      </tbody> 

的print_r的結果是

Array ([update] => 3 [update2] => 4 [update3] => 5) 

其間唯一我的輸入框的最後三個值從最後一行開始。我知道我需要遍歷每一行,但我不知道如何設置它。我也試過$tb_items = $this->input->post(NULL, TRUE);,它只返回5,最後一個值。

我還沒有包含模型,因爲我希望讓print_r返回正確的值,然後再繼續討論。在此先感謝您的幫助。

回答

0

你應該在名稱中使用

<input type="text" name="update[]" id="comment_plog" /> 
<input type="text" name="update2[]" id="ar_id" /> 
<input type="text" name="update3[]" id="date" /> 

通知[]。所以,你會得到類似

Array ([update] => Array([0] => 3 [1] => 4 [2] => 5) [update2] => Array([0] => 7 [1] => 8 [2] => 9) [update3] => Array([0] => 10 [1] => 11 [2] => 12)) 

,並可以遍歷每個字段像

foreach($_POST['update'] as $upd1) 
{ 
    //... 
} 

foreach($_POST['update2'] as $upd2) 
{ 
    //... 
} 

等。

+0

非常好!謝謝! – vizyourdata

+0

@altesv,歡迎您:-) –