Php “之后如何向用户提供反馈信息”;“保存”;功能代码点火器

Php “之后如何向用户提供反馈信息”;“保存”;功能代码点火器,php,sql,codeigniter,Php,Sql,Codeigniter,通常,我会返回一个JSON,其中包含一条关于函数状态的消息(如果出错或成功),但是,这次我遇到了一个问题。我正在用PHP开发一个注册学生加入大学的应用程序,数据库中有很多表可以插入学生的数据,比如,家长,学生地址,学生课程,课程价值等等,所以,在用户填写所有表单字段并按提交后,我做了很多插入和更新,就像不同表中的10个插入一样,我的问题是,在所有这些操作之后,我如何返回状态消息,如果我的一个插入失败,我如何处理它以向用户提供有关此操作的反馈?我对CodeIgniter有点陌生,下面是我如何在co

通常,我会返回一个JSON,其中包含一条关于函数状态的消息(如果出错或成功),但是,这次我遇到了一个问题。我正在用PHP开发一个注册学生加入大学的应用程序,数据库中有很多表可以插入学生的数据,比如,家长,学生地址,学生课程,课程价值等等,所以,在用户填写所有表单字段并按提交后,我做了很多插入和更新,就像不同表中的10个插入一样,我的问题是,在所有这些操作之后,我如何返回状态消息,如果我的一个插入失败,我如何处理它以向用户提供有关此操作的反馈?我对CodeIgniter有点陌生,下面是我如何在controller的save函数中插入的一个示例:

$studentData = array(
'FIELD1' => $data1,
'FIELD2' => $data2,
'FIELD3' => $data3
);
$this->mymodel->insert('STUDENTTABLE', $data);
我做了这么多这样的插入上面。如何返回每次插入的反馈,并在保存函数的最后返回成功消息

// 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->db->infected_rows()
    函数知道查询后它将返回受影响的行。您可以简单地使用if条件对其进行检查

    return ($this->db->affected_rows() != 1) ? false : true;
    
  • $this->db->insert_id()此函数将返回您最后插入的id,因此取决于您可以执行进一步的编码

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

    $this->db->trans_begin();
    
    // Your query 
    
    if ($this->db->trans_status() === FALSE)
    {
            $this->db->trans_rollback();
    }
    else
    {
            $this->db->trans_commit();
    }
    
  • 我个人更喜欢
    insert
    update
    查询的事务。如果要添加多个数据或执行多个与数据库相关的活动,则此功能非常有用

    现在,将消息传递给视图

    如果您使用上述技术并从模型向控制器返回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.
    
    }
    
    [Option-1]的视图

    <?php echo $msg; ?>
    //OR
    <?php print_r($msg); ?>
    
    
    //或
    
    [选项2]的视图

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