0

ユーザーのアカデミックの詳細を編集する編集フォームを送信しようとしています。これらの詳細は DB で一意の ID を持ち、短いコードのコードは以下のようになります。

class edit extends ci_controller
{

function user_academics($id = NULL)
    {
        if(isset($id) == FALSE)     //if link is ./edit/user_academics
        {
            $id = NULL;
            $link = site_url('profile');
            show_error("Invalid Page Request! <a href='$link' Go to Profile </a>");
        }

        $user_id = $this->session->userdata('user_id');        
        $data['fill'] = $this->edit_model->get_user_academics($id);

        if($user_id != $data['fill']['user_id'])    // check if logged in user is accessing his record or others
        {
             $link = site_url('profile');
            show_error("This is an Invalid Request ! <a href='$link'>Go to Profile </a>");
        }
        else // actual work starts here
        {
            $this->session->set_flashdata('ua_id',$id); // update_academics will get this data

            $this->load->view('edit/edit_3_view',$data);

        }
    }

 function update_academics()
    {
        $ua_id =  $this->session->flashdata('ua_id');   // flash data used here .
        if( !$ua_id )
        {
            show_error('Sorry, This request is not valid!');

        }
      $academics = array( 
            // All post values
        );

        $this->edit_model->update_user_academics($academics,$ua_id);
        //print_r($academics);
        redirect('profile');

    }

}

ここでの問題は、編集するために 2 つの異なるレコードを開くと、セッション フラッシュの値が 1 つだけ設定されることです。- そして、何を編集しても、最後のフラッシュ値の既存の値が更新されます。上記のコードが間違っている場合は、別の方法を提案するか、修正してください。ありがとう

4

2 に答える 2

1

次のように、そのフラッシュデータを配列に保存します。

$myArr = array('value 1', 'value 1');
//set it
$this->session->set_flashdata('some_name', $myArr);

そしてビューで:

$dataArrs = $this->session->flashdata('some_name');
//loop thru $dataArrs to show the flashdata
于 2013-01-25T07:27:07.930 に答える
0

フラッシュ データは、次のリクエストでのみ使用できる変数のようなものです。レコード ID を持つ 2 つの異なるキーを使用することで、この動作をバイパスできます。これにより、メッセージを表示するためにフラッシュ データを使用するときに、特定のレコード ID を持つキーにアクセスできます。

于 2013-01-25T07:28:34.303 に答える