如何在" save"之后给用户一个反馈信息。功能codeigniter

时间:2017-06-28 14:04:45

标签: php sql codeigniter

通常我会返回一个带有关于我的函数状态的消息的JSON,如果错误或成功,但是,这次,我遇到了麻烦。我正在使用PHP开发一个应用程序来注册学生加入大学,数据库有很多表来插入关于学生的数据,例如,父母,学生地址,学生课程,课程价值等等,所以,在用户填写所有表单字段并按提交后,我做了很多插入和更新,比如在不同的表中插入10个,我的问题是,如何在所有这些操作之后返回状态消息,如果我的一个插入失败,我如何处理它以向用户提供有关此的反馈?我是CodeIgniter的新手,这里有一个关于如何在控制器的保存功能中执行插入操作的示例:

$studentData = array(
'FIELD1' => $data1,
'FIELD2' => $data2,
'FIELD3' => $data3
);
$this->mymodel->insert('STUDENTTABLE', $data);

我在上面做了很多插件。如何返回每个插入的反馈,并在我的保存功能的最后返回成功消息?

2 个答案:

答案 0 :(得分:0)

// Set flash data in your controller

$this->session->set_flashdata('message_name', 'This is my message');

// After that you need to used redirect function instead of load view such as 
redirect("admin/signup");


// Get Flash data on view  in view page
$this->session->flashdata('message_name');

如需更多参考,请访问:this

tutorialspoint

答案 1 :(得分:0)

有许多技术可以让您知道您是否成功插入。

  1. 您可以使用此$this->db->affected_rows()函数在查询后知道它将返回受影响的行。你可以简单地使用if条件进行检查。

    return ($this->db->affected_rows() != 1) ? false : true;
    
  2. $this->db->insert_id();此函数会返回最后插入的ID,因此您可以进行进一步编码。

  3. 查找查询执行结果的最佳方法是交易。我在这里没有添加太多描述,因为您可以在CodeIgniter的用户指南中找到它。这是link。我只是添加一个例子,这样你就可以了解它。

    $this->db->trans_begin();
    
    // Your query 
    
    if ($this->db->trans_status() === FALSE)
    {
            $this->db->trans_rollback();
    }
    else
    {
            $this->db->trans_commit();
    }
    
  4. 我个人更喜欢insertupdate查询的交易。如果要添加多个数据或对数据库执行多个活动,这将非常有用。

    现在将消息传递给视图。

    如果你使用上面的技术并从模型到控制器返回true或false,那么根据它就很容易得到消息。

    我正在为您添加样本模型,控制器和视图代码。

    public function your_model_function(){
    
        // Do query
        // Return TRUE or FALSE
    
    }
    
    public function your_controller_function(){
    
        $data = $this->input->post(); // Your post data. You can use get also.
        $result = $this->your_model->your_model_function($data);
    
        //Normal Pass the variable to the view [OPTION-1]
        if($result == TRUE){
            $msg = "Successfully Insert.";
        }else {
            $msg = "Failed To Insert.";     
        }   
    
        $this->load->view('your_view',['msg'=>$msg]); // Change this code as per your requierment.
    
        //Now For Flash Data [OPTION-2]
    
         if($result == TRUE){
             $this->session->set_flashdata('feedback', 'Successfully Insert.');
        }else {
            this->session->set_flashdata('feedback', 'Failed To Insert.');      
        }   
    
        //redirect to your page 
        return redirect('your_controller/your_controller_function'); // Change this code as per your requierment.
    
    }
    

    查看[选项-1]

    <?php echo $msg; ?>
    //OR
    <?php print_r($msg); ?>
    

    查看[选项-2]

    <?php
        if ($feedback = $this->session->flashdata('feedback')){
            echo $feedback;
        }
    ?>