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