Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 可以从多个表单将多个数据插入到一个表中吗?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 可以从多个表单将多个数据插入到一个表中吗?

Php 可以从多个表单将多个数据插入到一个表中吗?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我正在使用codeigniter。我有多个表单,但只有在到达最后一个表单后,我才需要提交操作,该操作应插入所有表单中的所有数据。如何做到这一点? 我有一个控制器文件 <?php class Admin_service extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('service_

我正在使用codeigniter。我有多个表单,但只有在到达最后一个表单后,我才需要提交操作,该操作应插入所有表单中的所有数据。如何做到这一点? 我有一个控制器文件

<?php
class Admin_service extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('service_model');

        if(!$this->session->userdata('is_logged_in')){
            redirect('admin/login');
        }
    }


    public function add1()
    {

        if ($this->input->server('REQUEST_METHOD') === 'POST')
        {
$this->load->library('session');
            $this->session->unset_userdata('service_detail');

            $this->form_validation->set_rules('backbar', 'backbar');


            $this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>');

            //if the form has passed through the validation
            if ($this->form_validation->run())
            {
                $data_to_store = array(
                'id' => $this->input->post('service_detail'),
                    'service_name' => $this->input->post('backbar')

                );
                if($this->service_model->store_service($data_to_store)){
                    $data['flash_message'] = TRUE; 
                    $this->session->set_flashdata('flash_message', 'updated');

                }else{
                    $data['flash_message'] = FALSE; 
                }

            }

        }
        $data['category'] = $this->category_model->get_category();
        $data['main_content'] = 'admin/service/add1';
        $this->load->view('includes/template', $data);  

    }

    public function add()
    {
        if ($this->input->server('REQUEST_METHOD') === 'POST')
        {
    $this->load->library('session');
            $this->session->unset_userdata('service_detail');
            $this->form_validation->set_rules('id', 'id');
            $this->form_validation->set_rules('service_name', 'service_name','alpha');
            $this->form_validation->set_rules('category', 'category');
            $this->form_validation->set_rules('service_tax', 'service_tax');
            $this->form_validation->set_rules('service_length', 'service_length','numeric');
            $this->form_validation->set_rules('service_price', 'service_price','numeric');
            $this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>');

            if ($this->form_validation->run())
            {
                $data_to_store = array(
                'id' => $this->input->post('id'),
                    'service_name' => $this->input->post('service_name'),
                    'category' => $this->input->post('category'),
                    'service_tax' => $this->input->post('service_tax'),
                    'service_length' => $this->input->post('service_length'),          
                    'service_price' => $this->input->post('service_price')
                );

                if($this->service_model->store_service($data_to_store)){
                    $data['flash_message'] = TRUE; 
                    $this->session->set_flashdata('flash_message', 'updated');
                    $this->session->set_userdata('service_detail', ['service_price'=>$this->input->post('service_price'),"service_tax"=>$this->input->post('service_tax')]);
                    redirect(base_url().'admin/service/view');
                }else{
                    $data['flash_message'] = FALSE; 
                }

            }

        }

        $data['main_content'] = 'admin/service/add';
        $this->load->view('includes/template', $data);  
    }       



}

在用户提交表单的
html页面上添加一个复选框:

<input type="checkbox" name="is_finish" value="1" />
service\u model
模型上的
store\u service
功能修改如下:

if ($this->form_validation->run())
{

    $this->load->library('session');
    $service_details[] = array(
        'id' => $this->input->post('id'),
        'service_name' => $this->input->post('service_name'),
        'category' => $this->input->post('category'),
        'service_tax' => $this->input->post('service_tax'),
        'service_length' => $this->input->post('service_length'),          
        'service_price' => $this->input->post('service_price')
        );

    $service_details_sess = $this->session->userdata('service_details');

    if($service_details_sess != "") {
        $service_details[] = $service_details_sess;
    }

    $this->session->set_userdata('service_details',$service_details);

    $finish = $this->input->post('is_finish');

    if($finish == "1")
    {
        $this->service_model->store_service($service_details);
    }
}
function store_service($service_details) {
    $this->load->library('session');
    $this->session->unset_userdata('service_details');
    $this->db->insert_batch($service_details);
    if ($this->db->affected_rows() > 0)
    {
        return TRUE;
    }
        return FALSE;
}
HTML部分:

<button id="store_data" type="button">Store</button>
<script type="text/javascript">
$("#store_data").click(function(event) {
    $.ajax({
        url: 'path to your controller that store data',
        type: 'POST',
        data: $("#your_form_id").serialize(),
    })
    .done(function() {
        console.log("success");
    })
    .fail(function() {
        console.log("error");
    })
    .always(function() {
        console.log("complete");
    });

});
</script>
存储
$(“#存储#u数据”)。单击(函数(事件){
$.ajax({
url:“存储数据的控制器的路径”,
键入:“POST”,
数据:$(“#您的表单id”).serialize(),
})
.done(函数(){
控制台日志(“成功”);
})
.fail(函数(){
控制台日志(“错误”);
})
.always(函数(){
控制台日志(“完成”);
});
});

您需要某种表单来形成数据存储。也许可以尝试使用会话?如何进行?你能帮我编码吗?我可以使用会话来完成这项工作,但我没有任何按钮可以将我的数据带到控制器检查:$this->session->set_userdata('service_detail',['service_price'=>$this->input->post('service_price'),“service_tax”=>$this->input->post('service_tax');。当我有一些按钮操作(如保存更改)时,此代码可以工作。但在这种情况下,我有一个选项卡,我需要在其中插入单击“保存”按钮的位置。如果我没有“提交”按钮,该怎么办。如何在没有提交按钮的情况下将值从视图发布到控制器?@SundarNivash,您可以使用ajax来帮助您在没有提交按钮的情况下提交表单。你们想要ajax代码吗?我已经修改了答案,你们必须有id为的元素和表单元素。享受吧!我是否应该为此添加一些文件,比如jquery?当然,您必须包括jquery库。看起来您需要了解基本的jquery。最好从这里学习: