2011-07-29 8 views
0

**回答:セッション変数を使用するためにセッション変数を「直列化解除」する必要がありました。ああ。Codeigniterセッション値が持続しない

$ eventTypeID = unserialize($ this-> session-> userdata( 'eventtypeID'));


私は、これはbelaboredトピックで実現するが、CIに新しいもの、私は、ドキュメントのほとんどを通して読んだが、それは正しくセッションを取得/設定するために来るとき、私は何かを見下ろすする必要があります。

私はこの記事で見つけた構成を踏襲してきたし、そのFFはクッキーを格納されていることを確認することができます:2つのドロップダウンから値を選択する私のアプリが設定されてhttp://codeigniter.com/forums/viewthread/178904/

方法、ユーザーは、これらの値は、その後に入れています新しいビューが呼び出されます。新しいビューの中から私はセッション変数にアクセスし、それらを渡して私のdbに問い合わせることができる必要があります。現在のところ、クエリを表示すると、セッション値は送信されません。

すべてのサポートをよろしくお願いします。ありがとう!

EDITED BELLOW:セッション変数(配列)の設定が行われていないようです。

ここで設定するための私のコードです:

public function goSearch(){ 
      if(!empty($_POST)) { 
       $this->load->library('session');     
       $searchData = array(
        'eventtypeID' => serialize($this->input->post('pEventType')), 
        'venuecityID' => serialize($this->input->post('pVenueCity'))     
       ); 


    $this->session->set_userdata($searchData); /*ERROR: Nothing is being set. I've done print_r on $searchData, which returns values, but if I do: 

$test = $this->session->set_userdata($searchData); 
Print_r($test); 

Nothing is returned */ 

        $this->_displayPublicPage('search', NULL); 

       } 
      } 

ここでは、クエリに渡すために取得するための私の機能です:

public function readEvents(){ 
     $eventTypeID = $this->session->userdata(‘eventtypeID’); 
     $venueCityID = $this->session->userdata(‘venuecityID’); 
     echo json_encode($this->event_model->getSearchEvents($eventTypeID, $venueCityID)); 
     } 

は、ここに私のモデルでは、私のクエリです:

public function getSearchEvents($eventTypeID, $venueCityID){   
     $eventTypeID = intval($eventTypeID); 
     $venueCityID = intval($venueCityID); 

     $this->db->select('*');   
     $this->db->where('event_status =', 'A'); 
     $this->db->where('eventtype.eventtype_id =', $eventTypeID); 
     $this->db->where('city.city_id =', $venueCityID); 
     $this->db->join('eventtype', 'event.fk_eventtype_id = eventtype.eventtype_id'); 
     $this->db->join('venue', 'event.fk_venue_id = venue.venue_id'); 
     $this->db->join('city', 'venue.fk_city_id = city.city_id'); 
     $this->db->join('tickets', 'event.event_id = tickets.fk_event_id'); 
     $this->db->from('event'); 

     $this->db->_compile_select();  
     $q = $this->db->get(); 
     echo $this->db->last_query();     
     if($q->num_rows() > 0) { 
      return $q->result(); 
     } else { 
      return array(); 
     } 

    } 
+0

セッションクラスを読み込みましたか? –

+0

はい。オートロードで – user464180

答えて

0

セッションデータを保存するためにCookieを使用している場合は、 set_userdata()の後にst reloadページ。 Cookieはhttpヘッダー内で送信されるためです。

コントローラとモデルまたはビューの間で変数を渡すだけの場合は、セッションを使用する必要はありません。

+0

ありがとうございます。私が提出するビューでAjax/Jquerry-Datatablesを使用しています。問題は、データテーブルがレンダリングされる前に大量のデータをロードする必要があることと、必要なものを確保するために見つけた最も簡単な方法は、アイテムをセッションに入れることでした。 – user464180

+0

データベース内のセッションに切り替えて問題を解決する必要があります。セッションデータのデータベースへの保存@ http://codeigniter.com/user_guide/libraries/sessions.html – patwork

+0

ありがとうございました。 PHPのネイティブセッションの使用に何か問題はありますか? CIフレームワーク以外での操作以外にも、問題が発生する可能性があるのは不思議でした。 – user464180

0

一度通過したデータをシリアル化解除していませんでした。ああ。今すぐ動作します。

関連する問題