[Codeigniter-users] CIでの顧客管理システム

Back to archive index

牧尾竜一 ryuic****@jom*****
2008年 8月 8日 (金) 10:26:48 JST


JOMRです。

kunitsujiさん。ありがとうございます。

すこしづつセッションを使って考えていきます。


>  kunitsujiです。
>
> セッションは、ファイルとかに関係なく、利用状態であれば取得できます。
>
>   
>> JOMRです。
>>
>> セッションを利用したいメソッドにセッションを取得するように
>> $data['cu_id'] = $this->sessioni->userdata('sess_cu_id');
>> とかいけばコントローラ内で利用できる事はわかりました。
>>
>> これはセッション開放しない限りmodelや他のコントローラにも同じ用に利用で
>> きるのでしょうか?
>>
>>
>>     
>>>  kunitsujiです。
>>>
>>> くわしくみていないのですが、
>>> 同一セッションなので、新しい顧客IDをセットした時点で、変数の値が変わって
>>> いるかと思います。
>>>
>>>
>>>   
>>>       
>>>> JOMRです。
>>>>
>>>> 間違えていました。
>>>> デフォルトページではまだcu_idを選択していないのでセッション開始時期は詳
>>>> 細を選んだ時点なので
>>>> 詳細メソッドに
>>>> function detail($cu_id = '')
>>>> {
>>>> $cu_id = intval($cu_id);
>>>> $this->db->where(array('cu_id'=>($cu_id)));
>>>>
>>>> $query = $this->db->get('customer');
>>>> $pc_query = $this->db->get('computer');
>>>>
>>>> $pc_total = $this->Customer_model->get_computer_count($cu_id);
>>>>
>>>> //セッションデータをセット
>>>> $this->session->set_userdata('sess_cu_id', $cu_id);
>>>>
>>>> //セッションデータがあるのか確認
>>>> var_dump($this->session->userdata('sess_cu_id'));
>>>>
>>>> $this->db->order_by('cu_id', 'desc');
>>>> $this->db->where(array('cu_id'=>($cu_id)));
>>>> $data['pc_query'] = $this->db->get('computer', $this->pc_limit );
>>>>
>>>> if ($query)
>>>> {
>>>> $row = $query->row();
>>>> $data['cu_id'] = $row->cu_id;
>>>> $data['cu_name'] = $row->cu_name;
>>>> $data['cu_kana'] = $row->cu_kana;
>>>> $data['cu_pref'] = $row->cu_pref;
>>>> $data['cu_zip'] = $row->cu_zip;
>>>> $data['cu_add'] = $row->cu_add;
>>>> $data['cu_add2'] = $row->cu_add2;
>>>> $data['cu_tel'] = $row->cu_tel;
>>>> $data['cu_fax'] = $row->cu_fax;
>>>> $data['cu_mail'] = $row->cu_mail;
>>>> $data['biko'] = $row->biko;
>>>> $data['datetime'] = $row->datetime;
>>>> $data['msg'] = $this->edit_message;
>>>> $data['err_flag'] = FALSE; //エラーはない
>>>> }
>>>> else
>>>> {
>>>> //指定のIDが見つからなかった場合
>>>> $data['msg'] = $this->edit_error_message;
>>>> $data['err_flag'] = TRUE; //エラーとする
>>>> }
>>>>
>>>> if($pc_total)
>>>> {
>>>> $data['pc_item'] = $row->cu_name . ' ] の登録PCは 
>>>> [ ' .$pc_total . ' ] 台です。';
>>>> }
>>>> else
>>>> {
>>>> $data['pc_item'] = $row->cu_name . ' ] にはまだPCが登録されて
>>>> いません。';
>>>> }
>>>>
>>>> $this->load->view('customer/detail', $data);
>>>> }
>>>>
>>>>
>>>> として表示させると画面左上に
>>>> int(30)
>>>> と表示されるようになりました。
>>>>
>>>> ひとつ気になってのはセッションを開放していないのに戻って別の顧客IDを選択
>>>> すると選択したcu_idが表示されているのですがこれはCIが自動でセッションを
>>>> 開放してくれたと認識でいいのでしょうか?
>>>>     
>>>>         
>>>>> JOMRです。
>>>>>
>>>>> 詳細のメソッドに
>>>>>
>>>>> var_dump($this->session->userdata('sess_cu_id'));
>>>>>
>>>>> と書いて表示させてみると
>>>>>
>>>>> bool(false)
>>>>>
>>>>> と左上に表示していました。
>>>>> 一覧には
>>>>>
>>>>> // デフォルトページ
>>>>> function index($offset = '')
>>>>> {
>>>>> if ($this->session->userdata('logged_in'))
>>>>> {
>>>>> $cst_total = $this->Customer_model->get_customer_count();
>>>>>
>>>>> $offset = (int) $offset;
>>>>> $this->db->order_by('cu_id', 'desc');
>>>>>
>>>>> $config['base_url'] = $this->config->site_url('/customer/index/');
>>>>> $config['total_rows'] = $this->db->count_all('customer');
>>>>> $config['per_page'] = $this->limit;
>>>>> $config['first_link'] = '«最初';
>>>>> $config['last_link'] = '最後»';
>>>>> $config['full_tag_open'] = '<p class="navigation">';
>>>>> $config['full_tag_close'] = '</p>';
>>>>> $config['next_link'] = '次へ';
>>>>> $config['prev_link'] = '前へ';
>>>>>
>>>>> $this->pagination->initialize($config);
>>>>>
>>>>> $data['pagination'] = $this->pagination->create_links();
>>>>> $data['query'] = $this->db->get('customer', $this->limit, $offset);
>>>>>
>>>>> $this->session->set_userdata('sess_cu_id', $cu_id);
>>>>>
>>>>> if($cst_total)
>>>>> {
>>>>> $data['cst_item'] = $cst_total . '社です。';
>>>>> }
>>>>> else
>>>>> {
>>>>> $data['cst_item'] = 'ありません。';
>>>>> }
>>>>>
>>>>> $this->load->view('customer/show', $data);
>>>>>
>>>>> }
>>>>> else
>>>>> {
>>>>> redirect('/auth/login', 'refresh');
>>>>> }
>>>>>
>>>>> }
>>>>>
>>>>> として表示させてみるとエラーになっていました。
>>>>>
>>>>>
>>>>>         A PHP Error was encountered
>>>>>
>>>>> Severity: Notice
>>>>>
>>>>> Message: Undefined variable: cu_id
>>>>>
>>>>> Filename: controllers/customer.php
>>>>>
>>>>> Line Number: 55
>>>>>
>>>>>
>>>>> となっています。不確定な変数となっているのですがセッションの記述するとこ
>>>>> ろがまちがっているのでしょうか?
>>>>> とんちんかんな質問ばかりですみませんが宜しくお願いします。
>>>>>
>>>>>
>>>>>
>>>>>   
>>>>>       
>>>>>           
>>>>>>  kunitsujiです。
>>>>>>
>>>>>> うまくいかなかったということですが、
>>>>>> 詳細のページで一度画面に表示させてみてはいかがでしょう?
>>>>>>
>>>>>> var_dump($this->session->userdata('sess_cu_id'));
>>>>>> としてコントローラーで表示させて値があるかを確認してみてください。
>>>>>>
>>>>>>
>>>>>>   
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> JOMRです。
>>>>>>>
>>>>>>>     
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>>> set_userdata() を呼ぶだけですね。
>>>>>>>>
>>>>>>>> $this->session->set_userdata('some_name', 'some_value');
>>>>>>>>   
>>>>>>>>       
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>> cu_idをセッションに保存すると仮定して
>>>>>>> 一覧表示せるメソッドには
>>>>>>> $this->session->set_userdata('sess_cu_id', $cu_id);
>>>>>>>
>>>>>>> 詳細には
>>>>>>> $data['sess_cu_id'] = $this->session->userdata('sess_cu_id');
>>>>>>> $this->load->view('customer/detail', $data);
>>>>>>> としたのですがうまく出来ませんでした。
>>>>>>>
>>>>>>> マニュアルもみてみたのですがいまいち使い方がわかりません。
>>>>>>> セッションを使った簡単なカウンンターも試してみたのですが
>>>>>>>
>>>>>>> 一覧より顧客選択(ここでセッション開始(customer)
>>>>>>>>>>>>>> 詳細(ここでセッションデータを呼び出し)(customer/detail)
>>>>>>>
>>>>>>> と画面をまたぐ場合にはどのように使えば良いのでしょうか?
>>>>>>> どなたかご教授宜しくお願いします。
>>>>>>>
>>>>>>>
>>>>>>>     
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>>>>>> JOMRです。
>>>>>>>>>>
>>>>>>>>>> ログインの実装は少し難解というかまだ早いのかなと思い、
>>>>>>>>>> セッションに関してお聞きしたいのですが、
>>>>>>>>>>
>>>>>>>>>> 現在仮実装しているのは、
>>>>>>>>>> まず、一顧客を選択しそこへPC登録ボタンを準備し
>>>>>>>>>> 登録ボタンをクリックすると顧客IDを次の画面へPOSTしてPCテーブルへ顧客
>>>>>>>>>> ID
>>>>>>>>>>>>>>>>>>>> ともに登録しています。
>>>>>>>>>> ここでも素人発想ですが、顧客IDをPCテーブルのレコードに登録してあると
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 顧客を判別できるかなと。
>>>>>>>>>>
>>>>>>>>>> PCの登録が完了すると続いてPCを登録するというボタンを準備しこれも同じ
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 客IDをPOSTして登録処理をさせています。
>>>>>>>>>> ここで問題が発生しました。
>>>>>>>>>>
>>>>>>>>>> 2台目以降のPCを続けて登録しようとするとエラーとなってしまいます。
>>>>>>>>>> エラー表示は
>>>>>>>>>> The URI you submitted has disallowed characters.
>>>>>>>>>> となっています。
>>>>>>>>>> しかもその下に用意しているメニューにはURIにメニュー項目の名前がそ
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ま表示されてしまっています。
>>>>>>>>>> POSTを続けて行っているからどこかでおかしくなってしまっているのかなと
>>>>>>>>>>>>>>>>>>>> い、セッションデータに顧客IDを持たせてみたらいいのでは?と考えたので
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> この実装は可能なのでしょうか?
>>>>>>>>>> 保存させるセッションデータとしては顧客IDのみなのでCodeIgniterの4KB
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> まると思いました。
>>>>>>>>>>
>>>>>>>>>> 開始のタイミングは、顧客選択時で開放のタイミングは別の顧客選択時にし
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> と考えています。
>>>>>>>>>>
>>>>>>>>>> どなたかご教授お願いします。
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Codeigniter-users mailing list
>>>>>>>>>> Codei****@lists*****
>>>>>>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>>>>>>       
>>>>>>>>>>           
>>>>>>>>>>             
>>>>>>>>>>                 
>>>>>>>>>>                     
>>>>>>>>> _______________________________________________
>>>>>>>>> Codeigniter-users mailing list
>>>>>>>>> Codei****@lists*****
>>>>>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>>>>>     
>>>>>>>>>         
>>>>>>>>>           
>>>>>>>>>               
>>>>>>>>>                   
>>>>>>>> _______________________________________________
>>>>>>>> Codeigniter-users mailing list
>>>>>>>> Codei****@lists*****
>>>>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>>>>
>>>>>>>>
>>>>>>>> No virus found in this incoming message.
>>>>>>>> Checked by AVG - http://www.grisoft.jp 
>>>>>>>> Version: 8.0.138 / Virus Database: 270.5.12/1592 - Release Date: 2008/
>>>>>>>> 08
>>>>>>>> /05 
>>>>>>>> 6:03
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>   
>>>>>>>>       
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>> _______________________________________________
>>>>>>> Codeigniter-users mailing list
>>>>>>> Codei****@lists*****
>>>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>>>     
>>>>>>>       
>>>>>>>           
>>>>>>>               
>>>>>> _______________________________________________
>>>>>> Codeigniter-users mailing list
>>>>>> Codei****@lists*****
>>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>>
>>>>>>
>>>>>> No virus found in this incoming message.
>>>>>> Checked by AVG - http://www.grisoft.jp 
>>>>>> Version: 8.0.138 / Virus Database: 270.5.12/1596 - Release Date: 2008/08
>>>>>> /
>>>>>> 06 16:55
>>>>>>
>>>>>>
>>>>>>
>>>>>>   
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> _______________________________________________
>>>>> Codeigniter-users mailing list
>>>>> Codei****@lists*****
>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>
>>>>>
>>>>> No virus found in this incoming message.
>>>>> Checked by AVG - http://www.grisoft.jp 
>>>>> Version: 8.0.138 / Virus Database: 270.5.12/1596 - Release Date: 2008/08/
>>>>> 06 
>>>>> 16:55
>>>>>
>>>>>
>>>>>
>>>>>   
>>>>>       
>>>>>           
>>>> _______________________________________________
>>>> Codeigniter-users mailing list
>>>> Codei****@lists*****
>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>     
>>>>         
>>> _______________________________________________
>>> Codeigniter-users mailing list
>>> Codei****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - http://www.grisoft.jp 
>>> Version: 8.0.138 / Virus Database: 270.5.12/1596 - Release Date: 2008/08/06 
>>> 16:55
>>>
>>>
>>>
>>>   
>>>       
>> _______________________________________________
>> Codeigniter-users mailing list
>> Codei****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>     
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
>
> No virus found in this incoming message.
> Checked by AVG - http://www.grisoft.jp 
> Version: 8.0.138 / Virus Database: 270.5.12/1599 - Release Date: 2008/08/07 20:49
>
>
>
>   




Codeigniter-users メーリングリストの案内
Back to archive index