【发布时间】:2018-12-18 15:46:35
【问题描述】:
我想验证一个表单,以确保在这种情况下用户在描述字段中输入的内容是正确的。
但是,
在这里,我通过从 function 1
获取值来将值传递给 function 2函数 2 首次加载时,它会获取数据并显示值(OK)
但是当函数 2 重新提交验证和提交数据时,这些 valitable 会变为空并抛出错误 Message: Undefined variable: query (ERROR)
我不知道该怎么做,呵呵。我只是一个新手 PHP 程序员。
这是我目前所拥有的:
功能1
public function ask()
{
$this->load->model('MainM');
$this->load->library('form_validation');
$this->form_validation->set_rules('index', 'AL Index', 'trim|required|min_length[7]|max_length[7]');
if($this->form_validation->run() == FALSE) {
$this->load->view('enterindex');
}else{
$query = null; //emptying in case
$index = $this->input->post("index"); //getting from post value
$query = $this->db->get_where('tbl_reg', array('reg_index' => $index));
$count = $query->num_rows(); //counting result from query
if ($count == 1) {
$data['query'] = $this->MainM->getregdata($index);
$result = $this->load->view('submitques',$data);
}else{
$data = array();
$data['error'] = 'error';
$this->load->view('enterindex', $data);
}
}
功能2
public function submitq()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('yourq', 'Question', 'required|min_length[7]');
if($this->form_validation->run() == FALSE) {
$this->load->view('submitques',$data);
} else {
//insert the submitq form data into database
$data = array(
'reg_id' => $this->input->post('reg_id'),
'ques' => $this->input->post('yourq'),
'call' => "yes",
'status' => "New",
'date' => date('Y-m-d H:i:s')
);
if ($this->db->insert('tbl_ques', $data))
{
// success
$this->session->set_flashdata('success_msg', 'Your Submission is success');
redirect('main/submitq');
}
else
{
$this->load->view('submitques', $data);
}
}
}
【问题讨论】:
-
$_POST数据在刷新后不会保留,这就解释了为什么在重新加载时你会丢失它。鉴于此,如果您重新加载,您有两个选择:找出一种重新发布(通过 POST)数据的方法或处理submitq正在重新加载而不运行form_validation的事实。话虽如此,您到底想做什么?看起来您正在尝试将工作分配给两种方法,但不清楚您是如何尝试的 -
@Javier Larroulet 谢谢朋友,那我试试看。有什么建议吗?
-
这将有助于准确了解您要编排的内容。使用您提供的代码,我可以猜测有一个视图通过一个表单将数据传递给
ask(),然后您显示另一个视图,然后通过另一个表单将数据(可能)传递给submitq。是这样吗?您需要具体(并显示视图) -
@user3766509 其实是我先回答,你为什么接受下面的复制粘贴回答?
标签: php html codeigniter codeigniter-3 codeigniter-2