在codeigniter中的for循环中提交多个输入

时间:2015-01-29 08:19:34

标签: codeigniter variables view controller

我的代码是通过foreach循环获取保存在数据库中的用户的问题,让管理员回答每个问题,并在检查数据库中的验证规则后保存每个问题的答案,我们开始:

模型是:

public function get_questions(){

  $this->db->select('id,user_name, question, date');
  $this->db->order_by("id", "desc");
  $query=$this->db->get('t_questions');
  return $query->result();

}

我的观点是:

foreach ($questions as $id => $row) :
            ?> 
        <?php

                echo "<h5>".$row->question;
                echo "<br>";

                echo "from : ".$row->user_name."</h5>";
                echo date('Y-m-d H:i');
                echo "<br>";
                $q_no='save'.$row->id;
                $ans_no='answer'.$row->id;
                echo  "<h4> Answer:</h4>";
                echo form_open('control_panel'); 
                ?>
                <textarea name='<?php echo 'answer'.$row->id; ?>'  value="set_value('<?php echo 'answer'.$row->id; ?>')" class='form-control' rows='3'> </textarea>
                <input type='hidden' name='<?php echo $q_no ; ?>' value='<?php echo $q_no; ?>' />
                <input type='hidden' name='<?php echo $ans_no ; ?>' value='<?php echo $ans_no ; ?>' />
                <?php 
                echo form_error($ans_no);
                echo "               
            <div class='form-group'>
                            <div >
                                <label class='checkbox-inline'>

                                <input type='checkbox' name='add_faq' value='yes' />
                                      Adding to FAQ page .
                                </label>
                            </div>
                        </div>




          <p>";

           ?>
          <input type='submit' name='<?php echo 'save'.$row->id; ?>' value='<?php echo 'save'.$row->id; ?>' class='btn btn-success btn-md'/>
            <?php 
            echo 'answer'.$row->id;
            ?>
            <hr>

            <?php endforeach; ?>

我的控制器是:

 $this->load->model('control_panel');
    $data['questions']=$this->control_panel->get_questions();
    $data['no_of_questions']=count($data['questions']);



    if($this->input->post($q_no))
    {

      $this->form_validation->set_rules($ans_no,'Answer','required|xss_clean');  
        if($this->form_validation->run())
      {  

      /* code to insert answer in database */
      }

    }

当然它不适用于我: 我得到错误:

  
    

严重性:注意

  
     

消息:未定义的变量:q_no

我不知道如何解决它

我正在使用codeigniter,正如我在标题中所说的那样。

1 个答案:

答案 0 :(得分:0)

在您post()的控制器中,您有一个名为q_no的变量,您需要设置变量,这就是为什么不选择它。

我不认为输入中的name =“”可以有php代码我认为它必须只是文本。

最好在控制器中添加每个控件并将其调用到视图中。

请确保在控制器上执行某些操作

$q_no = $this->input->post('q_no');
$ans_no = $this->input->post('ans_no');

以下是我最有可能做的布局

对于控制器上的每个示例

$this->load->model('control_panel');

$data['no_of_questions'] = $this->db->count_all('my_table');

$data['questions'] = array();

$results = $this->control_panel->get_questions();

foreach ($results as $result) {
$data['questions'][] = array(
'question_id' => $result['question_id'],
'q_no' => $result['q_no'],
'ans_no' => $result['ans_no']
);
}

//Then validation


$this->load->library('form_validation');

$this->form_validation->set_rules('q_no', '', 'required');
$this->form_validation->set_rules('ans_no', '', 'required');

if ($this->input->post('q_no')) { // Would Not Do It This Way

if ($this->form_validation->run() == TRUE) {

// Run Database Insert / Update

// Redirect or load same view

} else {


// Run False

$this->load->view('your view', $data);

}

}

视图上的示例

<?php foreach ($questions as $question) {?>

<input type="text" name="id" value="<?php echo $question['question_id'];?>"/>
<input type="text" name="q_no" value"<?php echo $question['q_no'];?>"/>
<input type="text"name="a_no" value="<?php echo $question['a_no'];?>"/>

<?php }?>

模型

public function get_questions(){

  $this->db->select('id,user_name, question, date');
  $this->db->order_by("id", "desc");
  $query=$this->db->get('t_questions');
  return $query->result_array();

}