2013-06-08 2 views
0

Я работаю с функцией поиска, которая разбивает страницы на страницы внутри codeigniter. Поэтому я сохраняю поисковый запрос в сеансе, поэтому, когда вы переключаете страницы, этот термин по-прежнему доступен. У меня есть небольшая проблема с этим, но он сохраняет все, что вы вводите.Последовательный сеанс Codeigniter после поиска пользователей

Я знаю, что нужно очистить сессии с помощью этого

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

, но я просто уверен, что NIT, куда его положить. Я попытался разместить в начале и конце функции, но он очищает сессию слишком быстро, и при нажатии следующей страницы сеанса больше нет.

Есть ли способ очистить сеанс, когда пользователь вводит другое значение? Или я просто что-то пропустил?

Вот моя функция

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'); 
     } 
} 

я бы очень признателен за помощь!

+1

Вы должны быть пропусканием слова для поиска через URL, так что пользователь может иметь несколько поиск одновременно открывать и страница результатов bookmarkable и разделяемая. – Maerlyn

+0

Почему я хочу, чтобы они открыли несколько поисков? Я только хочу, чтобы они могли искать одну вещь за раз. Кроме того, это не моя проблема, моя проблема заключается в очистке сеансов. – zazvorniki

+0

Это внутренний поиск, хотя и не тот, который я хочу пометить или выполнить поиск. Это больше, если вы являетесь зарегистрированным пользователем и хотите более детальный поиск одной небольшой части сайта. Приятно иметь функцию. И, как я уже сказал, у меня только проблемы с очисткой сессий, которые я установил из-за разбиения на страницы, остальная часть поиска работает нормально. – zazvorniki

ответ

0

поставить это после того, как взгляд колонтитула: -

$this->session->unset_userdata('searchChal'); 
Смежные вопросы