我在使用codeigniter时遇到问题,现在我有一个系统在一个名为start的页面中向您显示一个问题,该问题来自使用此代码的数据库。
$data['question'] = $this->Setting->Loop('challenges_questions', 'ORDER BY RAND() LIMIT 1');
然后检查form_validation
if($this->form_validation->run() === TRUE){
foreach($data['question']->result() as $ques){
$query = $this->Challenges_Model->addAnswer($ques->the_answer);
}
}
这是型号
public function addAnswer($answer){
if($this->input->post('answer') == $answer){
if(!$this->session->userdata('is_stopped')){
$this->db->query("UPDATE challenges_scores SET points = points+1 WHERE user_id = ".$this->session->userdata('id').";");
//$this->db->set('points' , 'points+1');
//$this->db->where('user_id', $this->session->userdata('id'));
//$this->db->update('challenges_scores');
}else{
// unSet
$this->session->unset_userdata('is_stopped');
}
return TRUE;
}else{
return FALSE;
}
}
现在我的问题是,当用户发布输入(答案(时,查询被刷新,然后答案被更改,然后表单输入答案是错误的。
有什么方法可以保存数据以便在发布后使用吗?
逻辑与更新表单相同:
型号:
function get() {
return $this->db->get('sometable')->result();
}
控制器:
function index() {
$data['result'] = $this->sommodel->get();
$this->load->view('someview', $data);
}
在这里,如果有(在提交错误表单验证的情况下(,我们会得到post值,如果没有,我们会从db 中得到值
<input name="somefield" value="<?php isset($_POST['somefield']) { echo $_POST['somefield'] } else { echo $result->somefield; } ?>">
如果这只是一件事,只需将其存储在会话变量中,并通过放置$this->session->somefield
而不是$result->somefield
来执行相同的逻辑。如果数据太多,我不会推荐这种方法。