Clo*_*ife 3 php codeigniter codeigniter-form-helper
我是新手CodeIgniter,我一直在尝试实现表单提交功能,但每当我按"提交"表单页面时,只需刷新并且数据库不会更新!似乎$this->form_validation->run()总是返回假,但我不知道为什么.
所述控制器的功能如下:
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');
}
}
Run Code Online (Sandbox Code Playgroud)
这里是功能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);
}
Run Code Online (Sandbox Code Playgroud)
最后是表单视图(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>
Run Code Online (Sandbox Code Playgroud)
被困在这几天,但我仍然无法弄清楚出了什么问题.任何帮助将不胜感激!
小智 12
我认为这种情况正在发生,因为您尚未设置任何验证规则.控制器代码应如下所示:
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');
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅CodeIgniter用户指南 ; 它将为您提供有关验证规则的更多信息.