2012-08-03 20 views
0

저는 작업중인 웹 사이트에 대해 일련의 퀴즈를 만들고 있으며 사용자 데이터를 저장하는 데 약간의 문제가 있습니다. 구조가 약간 이상해서 문제가 발생할 수 있습니다. 내 퀴즈 컨트롤러는 Quiz1, Quiz2 등으로 레이블이 지정되고 jquery에서 청취되는 Quizzer라는 함수를로드합니다. 퀴즈 페이지에서 라디오 버튼을 클릭 할 때마다 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 Quizzer에 전달됩니다

이 페이지를로드하는 코드는 다음과 같습니다 샘플 코드입니다.

컨트롤러 Quizzer입니다 :

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를 반향 출력하므로 데이터를 가져 오는 것으로 알고 있지만 여전히 데이터베이스에 쓰지는 않습니다. 수동으로 $ qid 대신 4를 입력하면 함수가 작동하지만 현재 $ 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); 

이 ..you 일을해야합니다 또한

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

, 단일 Quiz 컨트롤러, 배수가 아닌 QuizN 컨트롤러가 있어야합니다 . 마지막으로 제어기가 다른 제어기를 호출하게하는 것은 일반적으로 나쁜 설계로 간주됩니다. 나는 내가 에게을 가지고 있다고 느낀 상황에 처했으나 피해야 만합니다. 이를 위해 Quiz 컨트롤러는 Quizzer 컨트롤러가 캡슐화 할 수 없어 무엇을 제공하지 않으므로 Quiz 컨트롤러가 전혀 없습니까?

건배

+0

틀림없이 코딩은 상당히 엉망입니다. 이것은 제 첫 번째 MVC 스타일 프로젝트입니다. 개별 퀴즈 페이지는 개별 퀴즈가 있기 때문에 각 페이지가 자신의 페이지가되었습니다. 원래 jquery는 내 퀴즈 중 하나를 들었지만 여러 퀴즈를들을 수있게 만들면서 퀴즈 컨트롤러로 퀴즈를 처리하는 메서드 호출을 분리했습니다. 퀴즈 페이지는 퀴즈를 해당 퀴즈에 고유 한 이미지와 질문으로 초기화하는 것뿐 아니라 해당 질문에 응답하는 시스템입니다. 나는 내가 사이트를 재구성 할 수있는 방법을보고 있지만 아직도 붙어있다. –

+0

또한 이러한 코드 라인은 어떻게 작동합니까? $ this-> quiz_model-> data = $ data; $ this-> quiz_model-> user_id = $ user_id; ... $ this-> quiz_model-> update(); –

관련 문제