【问题标题】:submit multiple inputs within a forloop in codeigniter在codeigniter的for循环中提交多个输入
【发布时间】:2015-01-29 08:19:34
【问题描述】:

我的代码是通过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。

【问题讨论】:

    标签: codeigniter variables view controller


    【解决方案1】:

    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();
    
    }
    

    【讨论】:

    • 首先,$q_no = $this-&gt;input-&gt;post('somthing'); 这是一个变量,所以我这样写:$q_no = $this-&gt;input-&gt;post('save'.$row-&gt;id);,它给了我一个错误:消息:尝试获取非对象的属性,所以我该怎么写这个表情?!我认为问题在于如何将变量从视图传递到控制器!
    • 请检查如何使用表单助手 codeigniter.com/user_guide/helpers/form_helper.html 加载变量,据我所知 name="a_no" 而不是 name="id; ? >" name="" 我认为只能是文本。
    • 对不起,我是 codeigniter 的初学者,我正在努力理解你所说的。我不明白你在控制器中编辑了什么我也不知道你为什么在视图中为 id 和 question 添加许多其他输入
    • In your name="" 输入不能是任何 php,就像你必须是文本一样。建议观看教程和阅读用户指南
    • 准确解释我想要做什么:应该让用户询问管理员,所以他们的问题保存在数据库中的 t_questions 表中,然后我通过 foreach 循环将它们放在视图中,然后我在每个提取的问题下为文本框编写了一个代码,让管理员回答每个问题,通过验证规则验证每个答案我通过问题的 id 来区分每个答案,这是表 t_question 中的一列,我也在做提交按钮相同,不同的是点击了哪个提交按钮
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多