如果验证在代码点火器中失败,如何保留变量值



我想验证表单以确保用户在这种情况下在描述字段中输入的内容表单验证是正确的。

在这里,我通过从函数1获取值来将值传递给函数 2

函数 2首次加载时,它会获取数据并显示值(确定)

但是当函数 2 重新提交以进行验证和订阅数据时,这些可评估的数据变得 empoty 并抛出错误Message: Undefined variable: query(错误)

我不知道该怎么做,呵呵。我只是一个新手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);
}     
}   
}

实际上,您$data变量放入了其他部分,因此这就是为什么出现此错误的原因,您需要在循环之前定义。

public function submitq()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('yourq', 'Question', 'required|min_length[7]'); 
// define here before check condtions
$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->form_validation->run() == FALSE) {            
$this->load->view('submitques',$data);
} else {        
//insert the submitq form data into database
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);
}     
}   
}

如果您希望在false条件下使用已发布的$data变量,则可以将其向上移动到验证块之外:

public function submitq()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('yourq', 'Question', 'required|min_length[7]'); 
$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->form_validation->run() == FALSE) {            
$this->load->view('submitques',$data);
} else {        
//insert the submitq form data into database
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);
}     
}   
}

尝试使用以下代码:

首先将表单库添加到配置/自动加载.php

$autoload['libraries'] = array('database','form_validation');

网页代码

这是查看文件登录.php

<?php echo form_open('action_controller_name', array('class' => '', 'enctype' => 'multipart/form-data', 'role' => 'form', 'name' => 'myform', 'id' => 'myform')); ?>
<div class="form-group">
<label class="control-label" for="mobile">Mobile-No</label>
<input type="text" name="mobile" value="" placeholder="Enter Mobile No" id="mobile" class="form-control" /> 
<label class="error"><?php echo form_error('mobile'); ?></label>
</div>
<div class="form-group">
<label class="control-label" for="password">Password</label>
<input type="password" name="password" value="" placeholder="Password" id="password" class="form-control" /> 
<label class="error"><?php echo form_error('mobile'); ?></label>
</div>
<input type="submit" value="Login" class="btn btn-gray" id="submit" /> 
<a class="forgotten" href="<?php echo base_url('login/forgot_password'); ?>" style="font-size: 13px;">Forgot Password</a> 
<?php
echo form_close();
?>

我的操作控制器

public function action_controller_name() {
$this->load->helper(array('form'));  // Load Form Library
$this->load->library('form_validation'); // Load Form Validaton Library
$this->form_validation->set_rules('mobile', 'mobile', 'required', array('required' => 'Please Enter Mobile Number.'));
$this->form_validation->set_rules('password', 'Password', 'required', array('required' => 'Please Enter passsword.'));
if ($this->form_validation->run() === TRUE) {  // Check validation Run
// Your Login code write here
} else {
$this->load->view('login', $this->data);
}
}

试试这段代码。如果验证在编码器中成功失败,则可以保留变量值。

最新更新