Codeigniter - 带循环的多输入
Codeigniter - multiple input with loop
我想用循环和我填充的每个数据的不同值制作多个输入形式,看起来这段代码有效,但它只得到 1 到 3 次具有相同值的数据。
我需要的是我可以为表单中的每个数据设置不同的值。
或者我是否需要这个或其他东西的模型?在这里挣扎了几天请帮忙。
这是我期望的表单循环结果
但我想得到这个输出:-
controller.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');
}
view.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>
您需要执行如下操作,
控制器部分:-
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>
<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/
当您点击添加更多按钮时,文本字段填充的数量与您点击的数量一样多,然后您可以将表单字段的名称属性更改为该代码,使用括号 [] 以便保存您的值作为数组
我想用循环和我填充的每个数据的不同值制作多个输入形式,看起来这段代码有效,但它只得到 1 到 3 次具有相同值的数据。
我需要的是我可以为表单中的每个数据设置不同的值。
或者我是否需要这个或其他东西的模型?在这里挣扎了几天请帮忙。
这是我期望的表单循环结果
但我想得到这个输出:-
controller.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');
}
view.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>
您需要执行如下操作,
控制器部分:-
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>
<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/
当您点击添加更多按钮时,文本字段填充的数量与您点击的数量一样多,然后您可以将表单字段的名称属性更改为该代码,使用括号 [] 以便保存您的值作为数组