簡體   English   中英

會話中未保存表單輸入值

[英]Form input values not held in session

我有這個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;
}

我猜想,當您導航到下一頁(不包含任何POST數據)時,您將清除會話數據的全部或部分。 嘗試改變部分

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

至:

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;

這意味着您僅在以前發布數據的情況下設置會話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM