2014-06-25 61 views
1

㈡大家,我有一個職位數據數組這個樣子,我很困惑如何創建控制器的邏輯:如何插入一批笨

POST數據:

Array 
(
    [nama_agenda] => blalala 
    [kilasan] => asdsadsadasd 
    [tgl_agenda] => 2014-06-01 
    [jam_agenda] => 13:27:30 
    [komisi] => Array 
    (
     [0] => 1 
     [1] => 3 
    ) 

    [fraksi] => Array 
    (
     [0] => 1 
     [1] => 4 
    ) 

    [badan] => Array 
    (
     [0] => 1 
     [1] => 3 
    ) 

    [anggota] => Array 
    (
     [0] => 1 
     [1] => 4 
    ) 

    [bagian] => Array 
    (
     [0] => 2 
     [1] => 4 
    ) 

) 

我的問題是如何在控制器中插入數據庫?感謝幫助。我會感激。

回答

0

S因此您的結構不適合insert_batch方法。你需要先重組它。考慮下面這個例子:

$original_values = array(
    'nama_agenda' => 'blalala', 
    'kilasan' => 'asdsadsadasd', 
    'tgl_agenda' => '2014-06-01', 
    'jam_agenda' => '13:27:30', 
    'komisi' => array(1, 3), 
    'fraksi' => array(1, 4), 
    'badan' => array(1, 3), 
    'anggota' => array(1, 4), 
    'bagian' => array(2, 4), 
); 

$new_values = array(); 
for($x = 0, $size = count($original_values['komisi']); $x < $size; $x++) { 
    foreach($original_values as $key => &$value) { 
     if(!is_array($value)) { 
      $new_values[$x][$key] = $value; 
     } else { 
      $new_values[$x][$key] = array_shift($value); 
     } 
    } 
} 

echo '<pre>'; 
print_r($new_values); 

應該產生這樣的:

Array 
(
    [0] => Array 
     (
      [nama_agenda] => blalala 
      [kilasan] => asdsadsadasd 
      [tgl_agenda] => 2014-06-01 
      [jam_agenda] => 13:27:30 
      [komisi] => 1 
      [fraksi] => 1 
      [badan] => 1 
      [anggota] => 1 
      [bagian] => 2 
     ) 

    [1] => Array 
     (
      [nama_agenda] => blalala 
      [kilasan] => asdsadsadasd 
      [tgl_agenda] => 2014-06-01 
      [jam_agenda] => 13:27:30 
      [komisi] => 3 
      [fraksi] => 4 
      [badan] => 3 
      [anggota] => 4 
      [bagian] => 4 
     ) 

) 

現在你可以使用insert_batch()方法。

$this->db->insert_batch('table_name', $new_values); 
0

獲得陣列使用$這個 - >輸入 - >後()中的所有數據,例如:

$bagian= $this->input->post('bagian'); 

,並創建一個陣列()

$arr=array(
'db_table_col_1'=>$bagian, 
'db_table_col_2'=>$post_data, 
'db_table_col_2'=>$post_data 
); 

通過這個數組來模擬

$this->your_model_name->function_name($arr); 

然後在模型中創建函數

function_name($arg){ 
$this->db->insert('table_name',$arr); 
} 

如果要插入多行就用的foreach

<?php 
$arr1=array(); 
$arr= array(
'nama_agenda' => 'blalala', 
'kilasan' => 'asdsadsadasd', 
'tgl_agenda' => '2014-06-01', 
'jam_agenda' => '13:27:30', 
'komisi' => array 
    (
     '0' => 1, 
     '1' => 3 
    ), 
'fraksi' => array 
    (
     '0' => 1, 
     '1' => 4 
    ), 
'badan' => array 
    (
     '0' => 1, 
     '1' => 3 
    ), 
'anggota' => array 
    (
     '0' => 1, 
     '1' => 4 
    ), 
    'bagian' => array 
    (
     '0' => 2, 
     '1' => 4 
    ) 
    ); 
    foreach($arr as $row){ 
if(is_array($row)){ 
array_push($arr1,$row); 
} 
    } 
print_r($arr1); 

,然後通過這個數組batch_insert

function_name($arr1){ 
$this->db->insert_batch('table_name',$arr1); 
} 

注ARR1語法必須

$arr1 = array(
array(
    'table_col1' => 'My title' , 
    'table_col2' => 'My Name' 
), 
array(
    'table_col1' => 'other title' , 
    'table_col2' => 'other Name' 
) 

); 

?>

+0

謝謝它的工作完美:) – user3562918