2016-05-12 8 views
1

私のcodeigniterアプリケーションでは、管理者がユーザーの役割を変更してユーザー情報を更新できるユーザーのリストがあります。ユーザーを編集するとき、urlはuser/edit_user/1002であり、edit_userビューがロードされます。 1002はユーザーのユーザーIDです。CodeigniterでURIセグメントが失われた

フォームを送信してform_validationが失敗すると、私はビューをリロードしますが、問題はユーザーIDを持つURLの最後のセグメントです。したがって、フォームで使用されるSQLクエリが失敗します。エラーが発生したビューをリロードして、uriセグメントにuseridを保持する方法はありますか?以下はコードです:

if ($this->form_validation->run() == FALSE) { 

     $userid = $this->uri->segment(3); 
     $this->db->where('userid', $userid); 
     $query = $this->db->get('user'); 
     $row1 = $query->row();  
     $data = (array)$row1;             

     $sql = "SELECT userid, role_id FROM user_role WHERE userid = $userid ";// This sql fails 
     $ro = $this->db->query($sql); 

     $data['role_check'] = $ro->result(); 
     $this->load->view('edit_user',$data); 
} 

ありがとうございます。コントローラのユーザに

view_user.phpにおいて

<tr> 
     <td><?php echo $loop->userid;?></td> 
     <td><?php echo $loop->name;?></td>      
     <td><a class="btn-small btn-info" href="<?php echo site_url(); ?>/user/edit_user/<?php echo $loop->userid;?>">Edit</td> 

    </tr> 

ザ、私は最初の投稿コードを使用しています。

+0

SESSION VARIABLEに設定し、更新後に破棄してください。 – JYoThI

+0

または更新アクションで同じIDを再度渡してください。user/edit_user/<?php echo $ this-> uri-> segment(3); – JYoThI

+0

妥当性検査は2回、すなわち最初にページをロードした後、再度エラーを検証するためにfalseになります。したがって、セッション変数を破棄することはできません。 uriセグメントはview_userページから来て、EDITをクリックするとedit_userページに移動します。もし私が<?php echo $ this-> uri-> segment(3); ?>を実行すると、 "メッセージ:クラスCI_URIのオブジェクトを文字列に変換できませんでした"というエラーが表示されます。この問題は本当に刺激になっています。 – John

答えて

0

私は問題を自分で解決し、ケースの他の誰かの顔でこの問題を、それを共有しています。 CIドキュメントを見て、セグメントが存在しない場合、関数はFALSEを返すことがわかりました。私は、更新プログラムが直面する可能性があるすべての条件をカバーするためにこの関数を使用しました。フォームの再検証の場合

if($this->uri->segment(3)) 
     { $userid = $this->uri->segment(3); 
      $this->session->set_userdata('update_user_id',$userid); 
     }    
     else    
      $userid= $this->session->userdata('update_user_id');  

、の$ this - > uri->セグメント(3)はFALSEを返し、それ以外の条件が設定されたセッションからユーザーIDを選択しますコードを以下に示します。最初にEDITリンクをクリックしてフォームに入力しました。

ありがとうございます。

1

フォームの操作でユーザーIDを追加します。

このような何か:

action="user/edit_user/<?php echo $this->uri->segment(3); ?>" 
+0

フォームアクションでIDを渡すと、 "メッセージ:クラスCI_URIのオブジェクトを文字列に変換できませんでした。 – John

関連する問題