Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter表单验证->;run()总是返回false?_Php_Codeigniter_Codeigniter Form Helper - Fatal编程技术网

Php CodeIgniter表单验证->;run()总是返回false?

Php CodeIgniter表单验证->;run()总是返回false?,php,codeigniter,codeigniter-form-helper,Php,Codeigniter,Codeigniter Form Helper,我是CodeIgniter新手,我一直在尝试实现表单提交功能,但是每当我按“提交”时,表单页面就会刷新,数据库也不会更新!似乎$this->form\u validation->run()总是返回false,但我不知道为什么 控制器的功能如下所示: public function write_prof_review($prof_id) { $this->load->model('Queries'); // form stuff here

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

控制器的功能如下所示:

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\u prof\u 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);
}
最后是表单的视图(create_prof_review.php):

写一篇评论
课程代码
轻松
有用性
清晰
评论


这件事已经困扰了我好几天了,但我还是不知道出了什么问题。任何帮助都将不胜感激

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

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

请参阅:;它将为您提供有关验证规则的更多信息。

您可以访问system/library/Form_validation.php

而且

if (count($this->_config_rules) == 0)
{
return FALSE;
}

将false更改为true

我遇到了相同的问题,尽管原因不同。我在表单中缺少一个正在验证的输入字段,即

private function validate_data(){
        $validate_data = array(

            array(

                'field' => 'steps',
                'label' => 'Steps',
                'rules' => 'trim|required|integer|xss_clean'

            ),

            array(

                'field' => 'pace',
                'label' => 'Pace',
                'rules' => 'trim|required|integer|xss_clean'

            ),

            array(

                'field' => 'speed',
                'label' => 'Speed',
                'rules' => 'trim|required|numeric|xss_clean'

            ),

            array(

                'field' => 'distance',
                'label' => 'Distance',
                'rules' => 'trim|required|numeric|xss_clean'

            )

        );//end array validate_data

        return $validate_data;
  }

我在表单中缺少速度输入字段。我加上它,问题就解决了。这真的让我头疼,因为我只是在重复使用我使用过很多次的代码,所以我不明白为什么
($this->form\u validation->run()
返回false,这是我以前从未遇到过的。

谢谢,这很有效!但是在成功提交表单后,我发现了一个新的php日期问题()函数,该函数在mysql数据库中显示为0000-00-00:00:00。无论如何,再次感谢您帮助制作表单post!原来我对date()函数使用了错误的日期格式,将其更改为date('Y-m-d H:I:s',time())谢谢。经过这么多小时的调试,它可以正常工作。我有一个开关盒表单验证规则。.谢谢这是我读过的最糟糕的答案!为什么要编辑系统文件并引入错误?升级。这实际上是一个非常好的解决方案。默认情况下,如果没有设置规则并且表单仍然经过验证,CodeIgniter将返回
FALSE
。Howev呃,大部分(全部)?在某些情况下,这是不受欢迎的行为。此评论的答案解决了这个问题。两年后-@christiangiumponi是对的,这是有史以来最糟糕的答案。永远不要,无论框架/CMS/什么,编辑核心文件。用您自己的文件扩展。我只是遇到了类似的情况-打开或关闭字段的条件设置不正确,因此字段试图验证,尽管提交它的视图上不存在。您的回答帮助我返回并思考发生了什么,所以谢谢!在我的情况下,这是一个愚蠢的错误。我没有在任何表单控件上使用
name
属性
private function validate_data(){
        $validate_data = array(

            array(

                'field' => 'steps',
                'label' => 'Steps',
                'rules' => 'trim|required|integer|xss_clean'

            ),

            array(

                'field' => 'pace',
                'label' => 'Pace',
                'rules' => 'trim|required|integer|xss_clean'

            ),

            array(

                'field' => 'speed',
                'label' => 'Speed',
                'rules' => 'trim|required|numeric|xss_clean'

            ),

            array(

                'field' => 'distance',
                'label' => 'Distance',
                'rules' => 'trim|required|numeric|xss_clean'

            )

        );//end array validate_data

        return $validate_data;
  }