Изменить данные массива в форме внутри цикла foreach - PullRequest
0 голосов
/ 27 июня 2018

На странице просмотра есть форма, которая принимает данные в виде многомерного массива. В режиме редактирования это значение формы выбирается и отображает данные через цикл foreach. Теперь моя проблема в том, что я не могу изменить данные формы в цикле foreach и отправить их в базу данных. Я просмотрел несколько постов о концепции ключа foreach, но как мне взять измененное значение здесь в html и отправить его в базу данных в рамках цикла foreach? Мой код загружает данные правильно, но не может обновить данные.

Вот мой код просмотра страницы:

<table class="table table-striped" id="dataTable">
    <thead>
    <tr>
        <th>Subscription</th>
        <th>Description</th>
        <th>Interval</th>
        <th>Amount</th>
        <th></th>
    </tr>
    </thead>
    <tbody>


    <?php
    if (!empty($invoice_detail)) {
        foreach ($invoice_detail as $key => $result) { ?>
            <tr>
                <td><input type="text" name="invoice[$key][invoice_detail_subs]" id="invoice_detail_subs"
                           value="<?php echo $result->invoice_detail_subs; ?>"/></td>
                <td><input type="text" name="invoice[$key][invoice_detail_desc]" id="invoice_detail_desc"
                           value="<?php echo $result->invoice_detail_desc; ?>"/></td>
                <td><input type="text" name="invoice[$key][invoice_detail_interval]" id="invoice_detail_interval"
                           value="<?php echo $result->invoice_detail_interval; ?>"/></td>
                <td><input type="text" name="invoice[$key][invoice_detail_amount]" id="invoice_detail_amount"
                           value="<?php echo $result->invoice_detail_amount; ?>"/></td>
                <td></td>
            </tr>

        <?php }
    } ?>

    </tbody>
</table>

Вот код обновления в контроллере:

if ($this->input->post('Submit')) {
    $query = $this->db->query(
        "SELECT * FROM ".$this->db->dbprefix."invoice_details WHERE invoice_detail_invoie_id ='".$id."' "
    );
    $fetch = $query->row();
    $rows = $query->num_rows();

    if ($id) {


        $data1 = [
            'invoice_detail_subs'     => $this->input->post('invoice_detail_subs'),
            'invoice_detail_desc'     => $this->input->post('invoice_detail_desc'),
            'invoice_detail_interval' => $this->input->post('invoice_detail_interval'),
            'invoice_detail_amount'   => $this->input->post('invoice_detail_amount'),
            'invoice_detail_mddt'     => date("Y-m-d H:i:s")
        ];

        $this->db->update('invoice_details', $data1, 'invoice_detail_invoie_id = '.$id);


    }
}

1 Ответ

0 голосов
/ 27 июня 2018

Посмотреть код

<table class="table table-striped" id="dataTable">
<thead>
<tr>
    <th>Subscription</th>
    <th>Description</th>
    <th>Interval</th>
    <th>Amount</th>
    <th></th>
</tr>
</thead>
<tbody>


<?php
if (is_object($invoice_detail)) :
    foreach ($invoice_detail as $key => $result) : ?>
        <tr>
            <td><input type="text" name="invoice_detail_subs"
                       value="<?= $result->invoice_detail_subs; ?>"/></td>
            <td><input type="text" name="invoice_detail_desc"
                       value="<?= $result->invoice_detail_desc; ?>"/></td>
            <td><input type="text" name="invoice_detail_interval"
                       value="<?= $result->invoice_detail_interval; ?>"/></td>
            <td><input type="text" name="invoice_detail_amount"
                       value="<?= $result->invoice_detail_amount; ?>"/></td>
            <td></td>
        </tr>

    <?php endforeach;
endif; ?>

</tbody>

обновить код в контроллере

    if ($this->input->method()=="post") {
  if ($id) {
   $data1 = ['invoice_detail_subs'=> $this->input->post('invoice_detail_subs'),
   'invoice_detail_desc' => $this->input->post('invoice_detail_desc'),
'invoice_detail_interval' => $this->input->post('invoice_detail_interval'),
'invoice_detail_amount' => $this->input->post('invoice_detail_amount'),
 'invoice_detail_mddt' => date("Y-m-d H:i:s")];
$this->db->update($this->db->dbprefix."invoice_details", $data1,['invoice_detail_invoie_id'=>$id]);
 }
}
$query = $this->db->select('*')->where(["invoice_detail_invoie_id"=>$id])->get($this->db->dbprefix."invoice_details");
 $fetch = $query->row();
 $rows = $query->num_rows();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...