2015-12-03 10 views
6

に失敗した私は、このようなHTMLのテーブルを持っている: VIEWPHP CodeIgniterのバッチ更新が

<table id="tableReport" class="table table-hover"> 
<thead> 
    <tr> 
     <th>NO</th> 
     <th>TYPE</th> 
     <th>ITEM</th> 
     <th>DAMAGE</th> 
     <th>REPAIR</th> 
     <th>REMARKS</th> 
     <th>MANHOUR</th> 
     <th>MATERIAL</th> 
     <th>A/C</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td> 
      <input class="form-control" type="text" value="68" placeholder="68" disabled="" name="name_type"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Cleaning" placeholder="Cleaning" disabled="" name="name_item"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Certificate" placeholder="Certificate" disabled="" name="name_item"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Broken" placeholder="Broken" disabled="" name="name_damage"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Blast&Paint" placeholder="Blast&Paint" disabled="" name="name_repair"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="AAAAAA" placeholder="AAAAAA" disabled="" name="name_remarks"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="10.00" placeholder="10.00" disabled="" name="name_damage"> 
     </td> 
     <td> 
      <input id="material" class="form-control" type="text"> 
     </td> 
     <td> 
      <input id="A/C" class="form-control" type="text"> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input class="form-control" type="text" value="69" placeholder="69" disabled="" name="name_type"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Cleaning" placeholder="Cleaning" disabled="" name="name_item"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Exterior" placeholder="Exterior" disabled="" name="name_item"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Modified" placeholder="Modified" disabled="" name="name_damage"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="Replace" placeholder="Replace" disabled="" name="name_repair"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="BBBBB" placeholder="BBBBB" disabled="" name="name_remarks"> 
     </td> 
     <td> 
      <input class="form-control" type="text" value="10.00" placeholder="10.00" disabled="" name="name_damage"> 
     </td> 
     <td> 
      <input id="material" class="form-control" type="text"> 
     </td> 
     <td> 
      <input id="A/C" class="form-control" type="text"> 
     </td> 
    </tr> 
</tbody> 
</table> 

jQueryの 私はこのjqueryのを使用して、これらのテーブルの上にすべての値を得た:

$('#tableReport').find('tbody').find('tr').each(function() { 
     var row_data = []; 
     $(':input', this).each(function() { 
      row_data.push($(this).val()); 
     }); 
     table_data.push(row_data); 
}); 

結果は次のようになります。

Array 
(
[0] => Array 
    (
     [0] => 68 
     [1] => Cleaning 
     [2] => Certificate 
     [3] => Broken 
     [4] => Blast&Paint 
     [5] => AAAAAA 
     [6] => 10.00 
     [7] => a 
     [8] => b 
    ) 

[1] => Array 
    (
     [0] => 69 
     [1] => Cleaning 
     [2] => Exterior 
     [3] => Modified 
     [4] => Replace 
     [5] => BBBBB 
     [6] => 10.00 
     [7] => c 
     [8] => d 
    ) 

) 

この配列は、テーブル内のupdate_batchに使用されます。

mysql> select * from tb_repair_detail; 
+-----------+--------------------+------+-----------+-----------+---------+---------+----------+------+ 
| DETAIL_ID | REPAIR_ESTIMATE_ID | ITEM | DAMAGE_ID | REPAIR_ID | REMARKS | MANHOUR | MATERIAL | AC | 
+-----------+--------------------+------+-----------+-----------+---------+---------+----------+------+ 
|  68 |     43 | 01 | 01  | 30  | AAAAAA | 10.00 |  NULL | NULL | 
|  69 |     43 | 03 | 16  | 45  | BBBBB | 10.00 |  NULL | NULL | 
+-----------+--------------------+------+-----------+-----------+---------+---------+----------+------+ 
2 rows in set (0.00 sec) 

SO、AJAXは、コントローラがこのアクションを取る呼び出します:

$.ajax({ 
     url: "<?php echo base_url('admin/c_admin/update_json_detail'); ?>", 
     type: "POST", 
     data: { 
      POST_ARRAY: table_data 
     }, 
     dataType: 'json', 
     success: function (obj) { 
      console.log(obj); 
     } 
    }); 
return false; 

CONTROLLER

public function update_json_detail(){ 
    $execute = $this->input->post("POST_ARRAY"); 
    /*CODE TO INSERT BATCH*/ 
    $callback = $this->m_admin->update_eir_to_cost($execute, execute_first_index[0]); 
} 

これはモデルです。

public function update_eir_to_cost($data, $id) { 
    $this->db->trans_start(); 
    $this->db->update_batch('tb_repair_detail', $data, $id); 
    $this->db->trans_complete(); 

    if ($this->db->trans_status() === FALSE) { 
     // generate an error... or use the log_message() function to log your error 
     echo "Error Updating"; 
    } 
} 

私の大きな問題は、私は更新バッチを使いたいです。しかし、私はちょうどmanhourと交流フィールドを更新したいです。私は本当にすべてのヘルプは、それはそう

UPDATE Mr.Sultanため 巨大な感謝を高く評価し、日間立ち往生。私のコードはこのように見えている は今、:

public function update_json_detail() { 
    $post_data = $this->input->post("POST_ARRAY"); 
    $execute = array(); 
    foreach ($post_data as $data) { 
     $execute[] = array(
      'ID'=> $data['0'], 
      'MATERIAL' => $data['7'], 
      'AC' => $data['8'] 
     ); 
    } 

    /* CODE TO INSERT BATCH */ 
    $callback = $this->m_admin->update_eir_to_cost($execute); 
} 

私のモデルはいくつかの問題、だってを取得し、私は、あなたのコントローラでは、溶液

+0

[タグ:バッチファイル]とは何が関係していますか? – aschipfl

答えて

0

ため

public function update_eir_to_cost($id, $material, $ac) { 
    $data = array(
     "MATERIAL" => $material, 
     "AC" => $ac 
    ); 

    $this->db->trans_start(); 
    $this->db->where($id); 
    $this->db->update_batch('tb_repair_detail', $data); 
    $this->db->trans_complete(); 

    if ($this->db->trans_status() === FALSE) { 
     // generate an error... or use the log_message() function to log your error 
     echo "Error Updating"; 
    } 
} 

感謝をupdate_batchする3つのパラメータを必要とします関数を次のように置き換えてください:

public function update_json_detail(){ 
    $post_data = $this->input->post("POST_ARRAY"); 
    $execute = array(); 
    foreach($post_data as $data){ 
    $execute[] = array(
    'MANHOUR' => $data['6'], 
    'AC' => $data['8'] 
    ); 
    } 
    /*CODE TO INSERT BATCH*/ 
    $callback = $this->m_admin->update_eir_to_cost($execute, execute_first_index[0]); 
} 
1

問題に対処するにはいくつかの方法がありますが、スマートな方法だけを選択する必要があります。

配列をプッシュして投稿するよりも、必要な要素だけを選択する必要があります。 入力要素とビュー(html)とjQueryプレースチェックにname属性を指定して、必要な要素を選択してください。モデルとコントローラで何も変更しないでください。

ステップ#1 入力エレメントにはname属性が必要です。

<input class="form-control" type="text" value="10.00" placeholder="10.00" disabled="" name="MANHOUR"> <input id="A/C" name="A/C" class="form-control" type="text" value="11111">

ステップ#2 jQueryの - あなたの代わりにこのrow_data.push($(this).val());のコードは次の値の場所を取得します。

if($(this).attr("name")==='name_type' || $(this).attr("name")==='MANHOUR' || $(this).attr("name")==='A/C'){ 
row_data.push($(this).val());} 
関連する問題