2012-08-03 313 views
0

我正在爲我正在處理的網站進行一系列測驗,並且在保存用戶數據時遇到了一些問題。這個結構有點奇怪,所以這可能與出現的問題有關。我的測驗控制器被標記爲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而不是將它作爲一個變量傳遞的函數的行爲時,它看起來像是數據類型的問題(這就是爲什麼我試圖強制轉換)。

回答

0

如果您quiz_model設計正確,而不是這樣的:

$this->quiz_model->update_record($data, $user_id, $qid, $question); 

..你應該做的:

$this->quiz_model->data = $data; 
$this->quiz_model->user_id = $user_id; 
... 
$this->quiz_model->update(); 

此外,你應該有一個單一的Quiz控制器,而不是多個QuizN控制器。最後,控制器調用其他控制器通常被認爲是不好的設計。我已經進入了我覺得的情況,但應該避免。爲此,您的Quiz控制器提供的是您的Quizzer控制器無法封裝,因此根本沒有Quiz控制器?

乾杯

+0

不可否認,編碼是相當草率的,這是我的第一個MVC風格的項目。單獨的測驗頁面是因爲有單獨的測驗,每個測驗都得到它自己的頁面。最初,jquery傾聽了我的一個測驗,但爲了能夠聽取多個測驗,我將處理測驗的方法調用分隔到Quizzer控制器中。測驗頁面是針對測驗初始化測驗的唯一問題和圖像,以及回答這些問題的系統。我正在考慮如何重組網站,但我仍然陷入困境。 – 2012-08-03 19:14:16

+0

另外,這些代碼行是如何工作的? $ this-> quiz_model-> data = $ data; $ this-> quiz_model-> user_id = $ user_id; ... $ this-> quiz_model-> update(); – 2012-08-03 19:16:01

相關問題