2015-12-03 11 views
6

मैं इस तरह एचटीएमएल पर एक टेबल है: देखेंकुछ मैदान पर पीएचपी 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) 

अतः, 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; 

नियंत्रक

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"; 
    } 
} 

मेरी बड़ी समस्या यह है कि मैं अद्यतन बैच का उपयोग करना चाहता हूं। लेकिन, मैं सिर्फ मैनहोर और एसी क्षेत्र को अपडेट करना चाहता हूं। मैं वास्तव में, दिनों के लिए अटक किसी भी मदद की सराहना की यह इतना

अद्यतन 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); 
} 

मेरे मॉडल कुछ परेशानी है, coz मिलता है, मैं समाधान

+0

[टैग: बैच-फ़ाइल] के साथ क्या करना है? – aschipfl

उत्तर

0

अपने नियंत्रक में के लिए update_batch को

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"; 
    } 
} 

धन्यवाद तीन मापदंडों की जरूरत है, अपने फ़ंक्शन को इस के साथ बदलें:

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

एस हैं किसी समस्या का सामना करने के लिए हमेशा के लिए विधियां, लेकिन हमें केवल सबसे स्मार्ट विधि चुननी है।

आपको सरणी में पुश करने और उन्हें पोस्ट करने के बजाय केवल आवश्यक तत्वों को चुनने की आवश्यकता है। कृपया इनपुट तत्वों के लिए नाम विशेषताओं को देखें और देखें (एचटीएमएल) और jQuery प्लेस में अपने आवश्यक तत्वों का चयन करने के लिए चेक करें। मॉडल और नियंत्रक में कुछ भी मत बदलें।

चरण # 1 इनपुट तत्व में नाम विशेषता होना चाहिए।

<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());} 
संबंधित मुद्दे