Php 使用CodeIgniter将使用foreach循环从视图获得的数据存储到数据库中
我试图将从表单获得的值存储到数据库中。我被困在不知道如何从Php 使用CodeIgniter将使用foreach循环从视图获得的数据存储到数据库中,php,mysql,codeigniter,foreach,Php,Mysql,Codeigniter,Foreach,我试图将从表单获得的值存储到数据库中。我被困在不知道如何从foreach($row作为$questions)分别获取值并将其存储到数据库中的地方 “我的数据库”表包含以下列: variantid | stepid | questionid | newquestion | radiovalues | description 当我单击save时,我正试图将从视图中获得的所有详细信息保存到数据库中。通过foreach($questions as$row)的每个循环获得的每个值都需要存储在新行中。我想
foreach($row作为$questions)
分别获取值并将其存储到数据库中的地方
“我的数据库”表包含以下列:
variantid | stepid | questionid | newquestion | radiovalues | description
当我单击save时,我正试图将从视图中获得的所有详细信息保存到数据库中。通过foreach($questions as$row)的每个循环获得的每个值都需要存储在新行中。我想我应该使用insert\u batch
,但我不知道如何将所有数据放入数组中
我怎样才能继续呢?下面是我编写的代码。我没有在模型中写任何东西,因为我被卡住了
<form id="theform">
<label for="variants">Variants:</label><br>
<?php
foreach($variants as $row)
{?>
<div class="form-group">
<input type="radio" name="variants[]" checked="true" id="variants" value="<?php echo $row->variantid ?>"/><?php echo $row->variantname ?><br/>
<?php }
?>
<div id='steplist'>
<?php
foreach($substeps as $row){
?>
<div id='img_div'>
<input type="radio" name="stepid[]" checked="true" id="stepid<?php echo $row->stepid; ?>" value="<?php echo $row->stepid; ?>"/><?php echo $row->stepname ?><br/>
</div>
<?php
foreach($questions as $each){
?><br><br>
<input type="text" name="questions[]" id="questions<?php echo $each->questionid; ?>" value="<?php echo $each->questionname; ?>" readonly/><br/>
<input type="hidden" name="questionid[]" id="questions<?php echo $each->questionid; ?>" value="<?php echo $each->questionid; ?>"/>
<a id="addq">Add question</a>
<input type="text" class="form-control" name="newquestion[]" style="font-weight:bold;width:100%;height:5%" id="new_questions<?php echo $each->questionid; ?>" /><br>
<div class="radio" id="answer">
<label style="font-weight:bold"><input type="radio" name="radioquestions[<?php echo $each->questionid; ?>][optradio]" value="no" required>no</label>
<label style="font-weight:bold"><input type="radio" name="radioquestions[<?php echo $each->questionid; ?>][optradio]" value="probably no" required>probably no </label>
<label style="font-weight:bold"><input type="radio" name="radioquestions[<?php echo $each->questionid; ?>][optradio]" value="unknown" required>unknown</label>
<label style="font-weight:bold"><input type="radio" name="radioquestions[<?php echo $each->questionid; ?>][optradio]" value="probably yes" required>probably yes</label>
<label style="font-weight:bold"><input type="radio" name="radioquestions[<?php echo $each->questionid; ?>][optradio]" value="yes">yes</label>
</div>
<textarea name="question1_text[]" id="description<?php echo $each->questionid; ?>" rows="3" cols="73"></textarea><br>
<?php
}
?>
<?php
}
?>
</div>
</form>
<input type='button' value='Save' class='save' id='save' />
<script>
$(document).ready(function(){
$("#save").click(function(e){
e.preventDefault();
$.ajax({
type:"POST",
url:"<?= base_url() ?>index.php/task/perform",
data:$('#theform').serialize(),
success:function(response){
alert(response);
}
});
});
});
更新
谢谢你的快速回复。我根据建议更改了代码。如何将这些值输入控制器并发送到数据库?foreach中的HTML无效,因为它缺少结束div标记,并且您的输入没有正确的name
属性,对于多个输入,您应该使用variants[]
而不是相同的ID。请按照以下方式执行:
<?php foreach ($variants as $row) { ?>
<div class="form-group">
<input type="radio" name="variants[]" checked="true" class="variants" value="<?php echo $row->variantid ?>"/><?php echo $row->variantname ?><br/>
</div>
<?php } ?>
HTML上不能有多个id相同的。您正在foreach上创建多个输入,它们都具有相同的id“变体”另一个问题,您在另一个foreach中有一个foreach(用于问题和子步骤),但您对它们使用相同的变量($row),因为内部foreach使用的范围与外部foreach相同,$行将被覆盖。显示模型代码$result=$this->task_model->performdata()代码>
<?php foreach ($variants as $row) { ?>
<div class="form-group">
<input type="radio" name="variants[]" checked="true" class="variants" value="<?php echo $row->variantid ?>"/><?php echo $row->variantname ?><br/>
</div>
<?php } ?>