我正在爲我正在處理的網站進行一系列測驗,並且在保存用戶數據時遇到了一些問題。這個結構有點奇怪,所以這可能與出現的問題有關。我的測驗控制器被標記爲Quiz1,Quiz2等等,並加載一個叫做Quizzer的函數,它在jquery中被監聽。每當測驗頁上單擊單選按鈕時,jquery將激活Quizzer以記錄用戶輸入。下面是示例代碼:將數據從控制器傳遞到控制器到模型
這是加載頁面的代碼:
public function Quiz4(){
$this->load->view("site_header");
$this->load->view("site_nav");
$this->load->model("quiz_model");
$this->data['choices'] = $this->quiz_model->get_records('quiz_4');
$this->load->view("student/quiztest", $this->data);
$quiz = 4;
$this->Quizzer($quiz);
$this->load->view("site_footer");
}
值4傳遞給嘲弄,所以它知道寫入到數據庫中的哪些測驗。
這是控制器嘲弄:
public function Quizzer($qid){
$this->load->model("quiz_model");
$user = $this->ion_auth->user()->row();
$user_id = $user->id;
$data = array(
'answer' => $this->input->post('answer')
);
$question = $this->input->post('question');
echo $qid;
$this->quiz_model->update_record($data, $user_id, $qid, $question);
}
$ USER_ID告訴哪個用戶登錄 $數據和$問題識別單選按鈕,用戶從哪個組點擊。
$ qid應該指明用戶在哪個測驗頁面上,並且在測試的情況下它會回顯出4,所以我知道它正在拾取數據,但它仍然不會寫入數據庫。我發現手動輸入4而不是$ qid會使該函數正常工作,但當前的$ qid變量將不被接受。
這是模型函數,它保存到數據庫中:
function update_record($data, $uid, $quiz, $question)
{
echo $quiz;
$this->db->where('uid', $uid);
$this->db->where('quiz', (int)$quiz);
$this->db->where('question', $question);
$this->db->update('quiz_results', $data);
}
我試圖鑄造$測驗,企圖獲取數據類型,以匹配爲int,但這一招不工作要麼。 根據當我手動輸入一個4而不是將它作爲一個變量傳遞的函數的行爲時,它看起來像是數據類型的問題(這就是爲什麼我試圖強制轉換)。
不可否認,編碼是相當草率的,這是我的第一個MVC風格的項目。單獨的測驗頁面是因爲有單獨的測驗,每個測驗都得到它自己的頁面。最初,jquery傾聽了我的一個測驗,但爲了能夠聽取多個測驗,我將處理測驗的方法調用分隔到Quizzer控制器中。測驗頁面是針對測驗初始化測驗的唯一問題和圖像,以及回答這些問題的系統。我正在考慮如何重組網站,但我仍然陷入困境。 – 2012-08-03 19:14:16
另外,這些代碼行是如何工作的? $ this-> quiz_model-> data = $ data; $ this-> quiz_model-> user_id = $ user_id; ... $ this-> quiz_model-> update(); – 2012-08-03 19:16:01