0

codeigniter 内のページを改ページする検索機能を使用しています。そのため、検索用語をセッションに保存しているので、ページを切り替えても用語は引き続き使用できます。ただし、少し問題があります。入力したものはすべて保存されます。

これを使用してセッションをクリアする必要があることはわかっています

$this->session->unset_userdata('searchChal');

しかし、私はそれをどこに置くべきか確信しています。関数の最初と最後に配置しようとしましたが、セッションのクリアが速すぎて、次のページをクリックするとセッションがなくなります。

ユーザーが別の値を入力したときにセッションをクリアする方法はありますか? それとも、何かが足りないのですか?

これが私の機能です

public function searchChallenges(){
//This function allows you to search through all the challenges
    $config["base_url"] = base_url()."index.php/story/searchChallenges";
    $config["total_rows"] = $this->data_model->searchChal_count();
    $config["per_page"] = 1;
    $config["uri_segment"] = 3;
    $choice = $config["total_rows"] / $config["per_page"];
    $config["num_links"] = round($choice);
    $this->pagination->initialize($config);
    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
    $searchTerm = $this->input->post("searchC", TRUE);

    if($searchTerm) {
        $searchChal= $this->input->post("searchC", TRUE);
         $this->session->set_userdata('searchChal', $searchChal);

     }elseif($this->session->userdata('searchChal')){
         $this->search = $this->session->userdata('searchChal');

     }else{
        $searchTerm ="";
     }

        if (empty($this->user)) {
            $this->load->view('header_view', array(
                'cSearch' =>  $this->session->userdata('searchChal'),
            ));
            $story = $this->story_model->searchChal($config['per_page'], $page);
            if (! isset($story[0]->challenge_id)){
                $this->load->view('noSearchChal_view');
            }else{
                $this->load->view('challenge_view', array(
                    'query' => $this->story_model->searchChal($config['per_page'], $page),
                        'links' => $this->pagination->create_links(),
                        'searchTerm' =>   $this->session->userdata('searchChal'),
                )); 
            }   
            $this->load->view('footer_view');   
        }else{
            $this->load->view('header_view',array(
                'user' => $this->users_model->getUser($this->user->user_id),
                'cSearch' =>  $this->input->post("searchC"),
            ));
            $story = $this->story_model->searchChal($config['per_page'], $page);
            if (! isset($story[0]->challenge_id)){
                $this->load->view('noSearchChal_view');
            }else{
                $this->load->view('challenge_view', array(
                    'query' => $this->story_model->searchChal($config['per_page'], $page),
                    'links' => $this->pagination->create_links(),
                    'admin' => $this->admin_model->adminSearchChal(),
                    'searchTerm' =>  $searchTerm,
                )); 
            }   
            $this->load->view('footer_view');   
        }
}   

助けていただければ幸いです。

4

1 に答える 1

0

これをフッタービューの後に置きます:-

$this->session->unset_userdata('searchChal'); 
于 2013-06-10T05:53:42.207 に答える