Как отправить данные в контроллер с помощью метода post внутри цикла данных в PHP - PullRequest
1 голос
/ 09 октября 2019

Я хочу опубликовать данные в детализированном контроллере, используя метод формы, и ему нужны некоторые данные из предыдущего представления.

это мое представление:

    <form role="form" action="<?php echo URL_CTR;?>general/do_performance/detail" method="post">
        <div role="tabpanel" class="tab-pane fade in active" id="per_provinsi">
            <h3 style="margin: 30px 0px 0px 0px;" class="text-center" id="title_do_1">Performance by <?php echo lang('gen.province.text');?></h3>
            <table class="table mb0 table-striped" id="table_1" class="table_width">
                <thead>
                    <tr>
                        <th style="width: 1%;"><?php echo lang('gen.no.text');?></th>
                        <th>Plant</th>
                        <th><?php echo lang('gen.province.text');?></th>
                        <th style="width: 10%;">Total DO</th>
                        <th style="width: 10%;">DO tidak terlambat</th>
                        <th style="width: 15%;">Lead Time Performance</th>
                        <th style="width: 5%;"><?php echo lang('gen.option.text');?></th>
                    </tr>
                </thead>
                <tbody id="data_1">
                </tbody>
            </table><br>
        </div>
    </form

иэто мой сценарий:

    function load_data_1(data) {
        var html = "";
        for (var i = 0; i < data.length; i++) {
            var a = '<tr>\
                    <th>' + (i + 1) + '</th>\
                    <td>' + data[i].gudang_nama + '<br>( ' + data[i].gudang_no_referensi + ')</td>\
                    <td>' + data[i].provinsi_nama + '<br>( ' + data[i].provinsi_id + ')</td>\
                    <td>' + data[i].total_data + '</td>\
                    <td>' + data[i].tepat_waktu + '</td>\
                    <td>' + data[i].delivery_rate + '</td>\

                    //this is the data i wanted to send
                    <input type="hidden" name="plant_id" value="'+data[i].gudang_id+'">\
                    <input type="hidden" name="param_id" value="'+data[i].provinsi_id+'">\
                    <input type="hidden" name="code" value="1">\

                    <td>\
                        <button class="btn btn-success dropdown-toggle btn-xs" type="submit" title="<?php echo lang('gen.detail.text');?>"><?php echo lang('gen.detail.text');?></button>\
                    </td>\
                </tr>';
            html = html + a;
        }
        $("#table_1").dataTable().fnDestroy();
        $('#data_1').html(html);
        $('#table_1').dataTable({
            // "scrollX": true,
        });
    }

я хочу передать данные этому контроллеру:

public function detail() {
    $data = array();

    $data["plant_id"]= $this->input->post('plant_id');
    $data["code"]= $this->input->post('code');
    $data["param_id"]= $this->input->post('param_id');

    echo json_encode($data);
}

, но результат показывает последний из данных для (plant_id 104 и param_id 891последние данные цикла):

{
    plant_id: "104", //this is the last data in looping for
    code: "1",
    param_id: "891", //this is the last data in looping for
}

в цикле 'for', как отправить только данные, когда нажата та же строка кнопки?

1 Ответ

0 голосов
/ 09 октября 2019

Измените имя различных полей для использования массива, поэтому plant_id должно быть plant_id[].

Ниже показано, как будет выглядеть обновленный код.

                    <input type="hidden" name="plant_id[]" value="'+data[i].gudang_id+'">\
                    <input type="hidden" name="param_id[]" value="'+data[i].provinsi_id+'">\
                    <input type="hidden" name="code[]" value="1">\

Вы можетепрочитайте значение в контроллере, как вы делаете в настоящее время. Теперь это будет array вместо string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...