php - CodeIgniter form_validation->run() 总是返回 false?

标签 php codeigniter codeigniter-form-helper

我是 CodeIgniter 的新手,我一直在尝试实现表单提交功能,但是每当我按下“提交”时,表单页面只会刷新,而数据库不会更新! $this->form_validation->run() 似乎总是返回 false,但我不知道为什么。

controller函数如下:

public function write_prof_review($prof_id)
    {
        $this->load->model('Queries');
        // form stuff here
        $this->load->helper('form');
        $this->load->library('form_validation');

        $data['prof_id'] = $prof_id;
        if($this->form_validation->run() == FALSE){
            $this->load->view('create_prof_review', $data);
        }
        else {
            $this->Queries->submit_prof_review($prof_id, $this->USERID);
            $this->load->view('form_submitted');
        }       
    }

这里是模型中的函数submit_prof_review():

function submit_prof_review($prof_id, $user_id)
    {
        $data = array(
            'course_code' => $this->input->post('course_code'),
            'easiness' => $this->input->post('easiness'),
            'helpfulness' => $this->input->post('helpfulness'),
            'clarity' => $this->input->post('clarity'),
            'comment' => $this->input->post('comment')
        );

    $average = round((($data['easiness'] + $data['helpfulness'] + $data['clarity'])/3),2);
    date_default_timezone_set('Asia/Hong_Kong');
    $date = date('m/d/Y h:i:s a', time());

    $data['average'] = $average;
    $data['date'] = $date;
    $data['course_id'] = 0; 

    return $this->db->insert('review_prof', $data);
}

最后是表单的 View (create_prof_review.php):

<h2>Write a review</h2>
<?php echo form_open('home/write_prof_review/'.$prof_id); ?>
<h3>Course code
<input type = 'text' name = 'course_code'></h3>
<h3>Easiness
<input type = 'text' name = 'easiness'></h3>
<h3>Helpfulness
<input type = 'text' name = 'helpfulness'></h3>
<h3>Clarity
<input type = 'text' name = 'clarity'></h3>
<h3>Comment</h3>
<textarea name = 'comment' rows = '4' cols = '50'></textarea>
<br>
<input type = 'submit' name = 'submit' value = 'Submit'>
</form>

这几天一直卡在这个问题上,但我还是搞不清楚哪里出了问题。任何帮助将不胜感激!

最佳答案

我认为这是因为您没有设置任何验证规则。 Controller 代码应如下所示:

public function write_prof_review($prof_id)
{
    $this->load->model('Queries');
    // form stuff here
    $this->load->helper('form');
    $this->load->library('form_validation');

    $data['prof_id'] = $prof_id;

    // here it is; I am binding rules 

    $this->form_validation->set_rules('course_code', 'Course Code', 'required');
    $this->form_validation->set_rules('easiness', 'easiness', 'required');
    $this->form_validation->set_rules('helpfulness', 'helpfulness', 'required');

    if($this->form_validation->run() == FALSE) {
        $this->load->view('create_prof_review', $data);
    }
    else {
        $this->Queries->submit_prof_review($prof_id, $this->USERID);
        $this->load->view('form_submitted');
    }
}

请引用the CodeIgniter user guide ;它将为您提供有关验证规则的更多信息。

关于php - CodeIgniter form_validation->run() 总是返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000803/

相关文章:

php - 通过ajax Json格式提交时在mysql中插入查询问题

php - 安卓/PHP : Display “Data successfully save” after save input data from android to MySQL

php - codeigniter 安全扩展不起作用,覆盖 csrf_show_error 消息

php - CodeIgniter,表单助手 - 向元素添加类

php - Laravel/Carbon Timestamp 0000-00-00 00 :00:00 or Unexpected data found. 发现意外数据。数据缺失

javascript - 如何使用图像和字符串将数据传递给ajax

javascript - Bootstrap typeahead 和 codeigniter

php - 如何在codeigniter中将csv文件导入到mysql

css - CodeIgniter 开/关 form_checkbox() 按钮不发送 $_POST 数据

php - 带有 form_helper 输入的 Codeigniter 下拉表单是索引/键而不是所选的值