使用CodeIgniter

时间:2017-03-30 17:46:56

标签: php mysql codeigniter foreach

我正在尝试将从表单中获取的值存储到数据库中。我陷入困境,我不知道如何从foreach($questions as $row)单独获取值并将它们存储到数据库中。

我的数据库表包含以下列:

variantid | stepid | questionid | newquestion | radiovalues | description

当我点击“保存”时,我试图将从视图中获取的所有详细信息保存到数据库中。每个foreach($questions as $row)循环获得的每个值都需要存储在一个新行中。我想我应该使用insert_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);

           }
         });
   });
 });

这是我的控制者:

public function perform(){
var_dump($_POST);
$variantid = $this->input->post('variants');
$stepid = $this->input->post('stepid');
$questionid = $this->input->post('questions');
$newquestion = $this->input->post('newquestion');
$radioquestions = $this->input->post('radioquestions');
$question1_text = $this->input->post('question1_text');

 $this->load->model('task_model');
 $result= $this->task_model->performdata();
 if($result){
 echo "Data saved successfully";
 }
}

更新

感谢您的快速回复。我根据建议更改了代码。如何将这些值放入控制器并将其发送到数据库中?

1 个答案:

答案 0 :(得分:1)

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 } ?>