2

我想用循环制作多个输入表单,并为我填写的每个数据设置不同的值,看起来这段代码正在工作,但它只获得 1 到 3 次具有相同值的数据。

我需要的是我可以为表格中的每个数据创造不同的价值。

或者也许我需要一个模型来做这个或什么?在这里挣扎了几天,请帮忙。

这是我对表单循环中的结果的期望

在此处输入图像描述

但我想得到这个输出: - 在此处输入图像描述

控制器.php

public function aksi_soal3(){
        $ps5 = $this->input->post('soal');
        $ps6 = $this->input->post('opsi_a');
        $ps7 = $this->input->post('opsi_b');
        $ps11 = $this->input->post('kunci_jawaban');

        $data = array(
            array(
                'soal' => $ps5,
                'opsi_a' => $ps6,
                'opsi_b' => $ps7,
                'kunci_jawaban' => $ps11
            ),
            array(
                'soal' => $ps5,
                'opsi_a' => $ps6,
                'opsi_b' => $ps7,
                'kunci_jawaban' => $ps11
            ),
            array(
                'soal' => $ps5,
                'opsi_a' => $ps6,
                'opsi_b' => $ps7,
                'kunci_jawaban' => $ps11
            )
        );

        $this->db->insert_batch('soal',$data);
        redirect('guru/index');
    }

视图.php

<!DOCTYPE html>
<html lang="en" >

<head>
  <title></title>
</head>

<body>
  
<?php
$i=1;
while ($i<=3){
foreach($tampilan as $soal){
    ?>
    <form action="<?php echo base_url()?>guru/aksi_soal3" method="post">
    
        <?php
    echo "  
            <input type='hidden' name='kode_soal' value='$soal->kode_soal''>
            <textarea placeholder='soal' name='soal'></textarea>

            <input type='text' name='opsi_a' placeholder='jawaban a'>
            <input type='text' name='opsi_b' placeholder='jawaban b'>
            <input type='text' name='kunci_jawaban' placeholder='Kunci jawaban' >
            </div>
            </div>
     ";
    ?>

        <?php
    $i=$i+1;
}}
?>   

<button type="submit" class="btn">Selesai</button>
</form>
</html>
4

2 回答 2

2

您需要执行以下操作,

控制器部分:-

    public function aksi_soal3(){
            $ps5 = $this->input->post('soal');
            $ps6 = $this->input->post('opsi_a');
            $ps7 = $this->input->post('opsi_b');
            $ps11 = $this->input->post('kunci_jawaban');
         $data = array();
        foreach($ps5 as $key=>$value) {
            $data[]  = array(
                    'soal' => $value,
                    'opsi_a' => $ps6[$key],
                    'opsi_b' => $ps7[$key],
                    'kunci_jawaban' => $ps11[$key]
                );
        }
            $this->db->insert_batch('soal',$data);
            redirect('guru/index');
        }

查看部分:-

    <form action="<?php echo base_url()?>guru/aksi_soal3" method="post">
    
    <input type='hidden' name='kode_soal[]' value='$soal->kode_soal''>
    <textarea placeholder='soal' name='soal[]'></textarea>
    <input type='text' name='opsi_a[]' placeholder='jawaban a'>
    <input type='text' name='opsi_b[]' placeholder='jawaban b'>
    <input type='text' name='kunci_jawaban[]' placeholder='Kunci jawaban' >
    
    <button type="submit" class="btn">Selesai</button>
    </form>
于 2018-11-01T05:57:25.050 回答
2
<div class="after-add-more">
<input type="text"name="StudentID[]" value="">
<div class="col-md-5">
<div class="form-group remove">
</div>
</div>
</div>
 <div class="form-group">
<button class="btn btn-success btn-fill add-more">Add More</button>
</div>

jQuery(document).ready(function() {
$("body").on("click",".add-more",function(){
    var html = $(".after-add-more:first").clone();
    $(html).find(".remove").html("<br><a class='btn btn-danger btn-fill remove'>Remove</a>");
  $(".after-add-more").last().after(html);
});
$("body").on("click",".remove",function(){ 
    $(this).parents(".after-add-more").remove();
});
});

你需要这样的东西:http: //jsfiddle.net/cudkfraj/

当您单击添加更多按钮时,文本字段会填充您单击的数量,然后您可以将表单字段的名称属性更改为该代码,使用括号 [] 以便您可以将值保存为数组

于 2018-11-01T06:40:11.497 回答