ユーザーがメンバーになり、最小限のプロファイルを持つことができるサイトを構築しています。それにもかかわらず、このユーザーが自分の記録 (自己紹介、電子メール、電話番号など) を更新したい場合は、「プロファイルの編集」リンクが必要です。クリックすると、そのユーザーのデータベース レコードから値が入力された入力フィールドがフォームに読み込まれます。フィールドの値を変更し、[変更を保存] をクリックすると、それらがデータベースにコミットされます。
何度かやってみましたが、失敗し続けました。以下は、データをフォームにロードしようとしたコードです。
public function load_edit()
{
//check user logged in
if(($this->session->userdata('username')!=""))
{
$data;
$result = $this->profileModel->load_user_editable_data($this->session->userdata('username'));
//check user data loaded successfully
if(isset($result))
{
//get the user information and store to $data array
foreach($result as &$value)
{
$data = $value;
}
$this->load->view('profile_edit', $data);
}
}else{
$this->login();
}
}
データベーステーブルのレコードを更新するには:
public function update_edit()
{
$this->form_validation->set_rules('fullname', 'الاسم الكامل', 'isset|required|alpha_dash');
if(isset($_POST))
{
//check user logged in
if(($this->session->userdata('username')!=""))
{
//check that there are no form validation errors
if($this->form_validation->run() == FALSE)
{
$data = $this->profileModel->load_user_editable_data($this->session->userdata('username'));
$this->load->view('profile_edit', $data);
}else{
$result = $this->profileModel->update_profile($this->session->userdata('username'));
if($result){
$this->load->view('profile_edit', $result);
}
}
}
}else{
$this->load->view('error');
}
}
上記のコードの実行で直面した主な問題は、何らかの形で update_edit を実行すると、フィールドの条件が満たされているにもかかわらず、フォームの検証に失敗したことが常に通知されることです。
事前に助けてくれてありがとう:)