2016-06-16 3 views
0

이 codeigniter 프로젝트를 작업하고 있습니다. 몇 가지 질문을 표시하고 질문을 배치로 표시하려면 페이지 매김을 사용하고 싶습니다. 처음로드 될 때 모든 것이 잘 작동하지만 (다음 페이지로 이동하면 작동하지 않습니다.) 그래서 폼 입력 값은 후속 페이지에서 유지되지 않으므로 세션을 사용하여 이러한 폼 값을 유지하기로 결정했으나 여전히 유지되지 않았습니다. 내 컨트롤러 :양식 입력 값이 세션에 저장되지 않았습니다.

public function displayQuestions() 
{ 
    $sessData = [ 
     'classLevel' => $this->input->post('class_level'), 
     'subject' => $this->input->post('subject') 
    ]; 

    $this->session->set_userdata($sessData); 

    $config = array(); 

    $page = (($this->uri->segment(3)) ? $this->uri->segment(3) : 0); 

    $config["base_url"]  = base_url().'questions/displayQuestions'; 
    $config["total_rows"] = 20; 
    $config["per_page"]  = 5; 
    $config["uri_segment"] = 3; 

    $this->pagination->initialize($config); 
    $data["links"] = $this->pagination->create_links(); 

    // print_r($this->session->classLevel); exit; 

    $data['questions'] = $this->questions_model->selectQuestions($this->session->classLevel, $this->session->subject, $config["per_page"], $page); 

    // $this->load->view('layouts/header'); 
    $this->load->view('users/questions', $data); 
    // $this->load->view('layouts/sidebar'); 
    // $this->load->view('layouts/footer'); 
} 

참고 : 양식 입력 값을 사용하여 질문을 표시합니다. 내 모델 :

public function selectQuestions($classLevel, $subject, $limit, $start) 
{ 
    $questions = $this->db->where('class_level', $classLevel) 
        ->where('subj_code', $subject) 
        // ->order_by('id', 'RANDOM') 
        ->limit($limit, $start) 
        ->get('questions'); 
    // $questions = $this->db->limit($limit, $start) 
    //    ->get('questions'); 

    if ($questions->num_rows() > 0) { 
     return $questions->result_array(); 
     // print_r($questions->result_array()); 
    } 

    return false; 
} 
+0

displayQuestions 메서드를 호출 할 때마다 세션 데이터를 다시 설정 한 것 같습니다. 그리고 포스트 데이터가 비어 있다면 세션은 다시 0이됩니까? – jtheman

+0

아니요 세션 데이터를 다시 설정하지 않습니다. 세션은 여전히 ​​이전 데이터를 전달합니다. – ammezie

+0

''classLevel '=> $ this-> input-> post ('class_level ')는'classLevel' 키의 세션 데이터를 포스트 데이터로 설정하지만 포스트 데이터가 비어 있으면 세션을 리셋하겠습니까? – jtheman

답변

1

내 생각 엔 당신이 (모든 POST 데이터를 포함하지 않음) 다음 페이지로 이동 할 때 세션 데이터의 전부 또는 일부를 삭제합니다. 데이터가 이전에 게시되는 경우에만 세션을 설정하는 것이 의미

if ($this->input->post('class_level') && $this->input->post('subject')): 
    $sessData = [ 
     'classLevel' => $this->input->post('class_level'), 
     'subject' => $this->input->post('subject') 
    ]; 
    $this->session->set_userdata($sessData); 
endif; 

: 일부에게로

$sessData = [ 
    'classLevel' => $this->input->post('class_level'), 
    'subject' => $this->input->post('subject') 
]; 
$this->session->set_userdata($sessData); 

을 변경하려고합니다.

+0

고마워,이게 해결 됐어. – ammezie

관련 문제