如何将会话数据发布到模型中以插入到codeigniter中的db中

时间:2014-01-18 06:45:05

标签: php codeigniter

控制器

public function respondent_info()
    {    
        $data['states'] = $this->survey_model->get_states();
        $state = $this->session->store['loginData']['state'];
        $financial_year =  $this->session->store['loginData']['financial_year'];
        $getData = $this->survey_model->get_page($state, $financial_year);
        if ($getData == '1') {
            $data['res_info'] = $this->survey_model->get_resinfo_details($state);
            $this->load->view('edit_respondent_info', $data);    
        }else {
            $this->load->view('respondent_info', $data);
        }
        if(isset($_POST['submit_x'])) {
            $respondentArray = array(
                'state' => empty($_POST['state']) ? '' : $_POST['state'],
                'name' => empty($_POST['name']) ? '' : $_POST['name'],
                'title1' => empty($_POST['title1']) ? '' : $_POST['title1'],
                'dline' => empty($_POST['dline']) ? '' : $_POST['dline'],
                'email' => empty($_POST['email']) ? '' : $_POST['email'],
                'organization' =>empty( $_POST['organization']) ? '' : $_POST['organization'],
                'address' => empty($_POST['address']) ? '' : $_POST['address'],
                'city' => empty($_POST['city']) ? '' : $_POST['city'],
                'state1' =>empty( $_POST['state1']) ? '' : $_POST['state1'],
                'zip' => empty($_POST['zip']) ? '' : $_POST['zip'],
                'phone' => empty($_POST['phone']) ? '' : $_POST['phone'],
                'fax' =>empty( $_POST['fax']) ? '' : $_POST['fax'],
            );
            $this->session->set_userdata('respondent_info',$respondentArray);
            $this->survey_model->auto_save_respondent_info( $_POST);
            redirect('survey/budget_overview');
        }
    }  

模型

 function auto_save_respondent_info($post){
  echo("auto");
  $respondentArray = array(
            'survey_id' => $this->session->store['survey_id'],
            'state' => empty($_POST['state']) ? '' : $_POST['state'],
            'name' => empty($_POST['name']) ? '' : $_POST['name'],
            'title1' => empty($_POST['title1']) ? '' : $_POST['title1'],
            'dline' => empty($_POST['dline']) ? '' : $_POST['dline'],
            'email' => empty($_POST['email']) ? '' : $_POST['email'],
            'organization' =>empty( $_POST['organization']) ? '' : $_POST['organization'],
            'address' => empty($_POST['address']) ? '' : $_POST['address'],
            'city' => empty($_POST['city']) ? '' : $_POST['city'],
            'state1' =>empty( $_POST['state1']) ? '' : $_POST['state1'],
            'zip' => empty($_POST['zip']) ? '' : $_POST['zip'],
            'phone' => empty($_POST['phone']) ? '' : $_POST['phone'],
            'fax' =>empty( $_POST['fax']) ? '' : $_POST['fax'],
        );

    $this->db->select('*');
    $this->db->from('survey_respondent_info');
    $this->db->where('state',  $state);
    $query = $this->db->get();
        if ($query->num_rows() > 0)
        {
        echo("update");
          // $this->db->where('state',  $state);
          // $this->db->update('survey_respondent_info', $resInfoArray);
        }
        else{
        echo("insert");
          // $this->db->insert('survey_respondent_info', $resInfoArray);
        }
  }

这里没有调用模型函数,我无法查看echo中给出的数据。如何调用它或如何将会话中存储的数据发送到模型,我知道我的代码中缺少某些内容,有人可以帮助我。感谢。

1 个答案:

答案 0 :(得分:0)

[根据用户需求更新] 首先,您需要验证用户输入。您可以找到示例here。接下来,您必须在使用之前加载模型。您可以从控制器加载模型,如

$this->load->model('survey_model');

如果验证为真,您可以按如下方式调用保存功能:

$this->survey_model->auto_save_respondent_info();

您不必将会话或发布数据传递给您的模型。

您只需从

这样的模型中访问会话即可
    function auto_save_respondent_info(){
        $respondent_info = $this->session->userdata('respondent_info');
        print_r($respondent_info);
        ...............
    }

您可以从模型中访问帖子数据

   function auto_save_respondent_info(){
        print_r($_POST);
        ...............
    }

由于您使用的是codeignitor,因此您可以使用$this->input->post('fieldname')代替$ _POST。此外,您不必将发布数据保存到会话以传递它的模型。您可以在模型中访问$this->input->post('fieldname')。您还应该在控制器中验证表单输入。

访问模型

中的帖子数据
function auto_save_respondent_info(){
      echo $this->input->post('state');
      .......... 

}

我希望你明白这一点。