如何从循环表中插入多个数据?

时间:2015-12-10 02:58:26

标签: php codeigniter loops

我想从循环表中插入多个记录。每行都有隐藏的输入。

我将POST将在循环条件中使用的表的总行数。

以下是我的观点:

<input type="hidden" name="rowcount">//total row of the table
<table class="table" id="ctable" style="border:0;">
            <?php
                foreach ($row12 as $row12) {
                echo"<tr>
                    <td style='vertical-align:midle; width:175px; border:0; padding-right:20px;' align='right' ><b>".$row12->mapel_un."</b></td>
                    <td style='border:0;'>
                    <input type='hidden' name='id_peserta' value='$row13->id_peserta'>
                        <input type='hidden' name='id_un' value='$row12->id_un'>
                        <input class='form-control' type='text' name='nilai' value='$nilai' />
                    </td>
                </tr>";
                }
            ?>
    </table>

这是我的模特:

function simpan_nilai(){
    $jumlah = $this->input->post('rowcount');
    $x=1;
    while($x<=$jumlah){
      $this->db->query("INSERT INTO nilai SET
                      id_peserta = '".$this->input->post('id_peserta')."',
                      id_un = '".$this->input->post('id_un')."',
                      nilai = '".$this->input->post('nilai')."' ");
      $x++;
    }
    return "info-Data berhasil disimpan ...";
  }

我只能插入最后一行数据。例如,如果数据类似于(001,1,100),(001,2,90),(001,3,95),则只将最后一行记录插入数据库,即(001,3,95) )。

请帮帮我。谢谢!

2 个答案:

答案 0 :(得分:1)

关闭。

我已经解决了我的问题。

感谢所有帮助过我的人

查看:

<input type='text' name='rowcount'>
<table class="table" id="ctable" style="border:0;">
   <?php
       foreach ($row12 as $row12) {
          echo"<tr>
                 <td style='vertical-align:midle; width:175px; border:0; padding-right:20px;' align='right' ><b>".$row12->mapel_un."</b></td>
                    <td style='border:0;'>
                    <input type='hidden' name='id_peserta' value='$row13->id_peserta'>
                        <input type='hidden' name='id_un$row12->id_un' value='$row12->id_un'>
                        <input class='form-control' type='text' name='nilai$row12->id_un' value='$nilai' />
                 </td>
               </tr>";
       }
   ?>
</table>

型号:

function simpan_nilai(){
    $jumlah = $this->input->post('rowcount');
    $x=1;
    while($x<=$jumlah){
      $nilai = 'nilai' . $x;
      $id_un = 'id_un' . $x;
      $this->db->query("INSERT INTO nilai SET
                      id_peserta = '".$this->input->post('id_peserta')."',
                      id_un = '".$this->input->post($id_un)."',
                      nilai = '".$this->input->post($nilai)."' ");
      $x++;
    }
    return "info-Data berhasil disimpan ...";
  }

答案 1 :(得分:0)

原因是因为您有多个同名隐藏输入char。在PHP代码中,收到的唯一输入是同名的最后一个输入。

您可以尝试在每个输入id_peserta后附加一个计数,以使其唯一。

name

并为您的PHP代码。

<input type="hidden" name="rowcount"> <!-- total row of the table -->
<table class="table" id="ctable" style="border:0;">
        <?php
            $count = 1; // You can start from zero. Either works.
            foreach ($row12 as $row12) {
                echo "<tr>
                    <td style='vertical-align:midle; width:175px; border:0; padding-right:20px;' align='right' ><b>".$row12->mapel_un."</b></td>
                    <td style='border:0;'>
                        <input type='hidden' name='id_peserta{$count}' value='$row13->id_peserta'>
                        <input type='hidden' name='id_un{$count}' value='$row12->id_un'>
                        <input class='form-control' type='text' name='nilai{$count}' value='$nilai' />
                    </td>
                </tr>";
                $count++;
            }
        ?>
</table>