jquery - PHP Codeigniter 批量更新某些字段失败

标签 jquery codeigniter

我有一个像这样的 html 表格: 查看

<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 调用 Controller 执行此操作:

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

我的大问题是,我想使用批量更新。但是,我只想更新工时和交流字段。我真的被困了好几天了,非常感谢任何帮助

更新 非常感谢苏丹先生。 现在,我的代码如下所示:

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

我的模型遇到了一些麻烦,因为我需要三个参数来 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";
    }
}

感谢您的解决方案

最佳答案

在您的 Controller 中,将您的函数替换为以下函数:

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]);
}

关于jquery - PHP Codeigniter 批量更新某些字段失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063594/

相关文章:

javascript - 回车后如何调用onclick函数

javascript - ajax发送html+JS

php - MAMP 在外部数据库连接下运行速度极慢

javascript - 无法从@Url.Action 访问变量

javascript - 解析来自服务器的 JSON 并重新排序

jquery - 验证空字段并列出所有错误并通过 jquery 突出显示所有错误字段并在 zend 框架中显示顶部的错误列表

php - Youtube iframe 解码为 htmlentities

php - 不是唯一的表/别名(codeigniter)

unix - Codeigniter DB 设置 - 为什么 127.0.0.1 有效,而 localhost 无效

php - 从sql表中查询数据,其中引用在另一个表中