php - 如何避免在双击按钮上插入多个数据

标签 php ajax codeigniter codeigniter-2 codeigniter-3

我已经使用ajax调用完成了数据插入。当点击提交按钮时,它会重定向到查看页面。但问题是,当连续点击提交按钮时,多个条目进入数据库。如何防止这种情况。我在下面给出我的代码。请帮忙。

Controller

 public function addmerchant() {
        $this->load->helper(array('form', 'url'));
        $this->load->helper('file');

         $ip = $_SERVER['REMOTE_ADDR'];
         $config['upload_path'] = 'assets/images/merchantquote';
        $config['allowed_types'] ='gif|jpg|jpeg|png|pdf|doc|docx|txt';
        $config['max_size'] = '1000';
        $config['max_width'] = '2024';
        $config['max_height'] = '1768';
        $config['width'] = 75;
        $config['height'] = 50;
         if (isset($_FILES['txtattachments']['name'])) {
            $filename = "-" . $_FILES['txtattachments']['name'];
            $config['file_name'] = substr(md5(time()), 0, 28) . $filename;
        }
        $config['overwrite'] = TRUE;
        $config['remove_spaces'] = TRUE;
        $field_name = "txtattachments";
        $this->load->library('upload', $config);
         if (!$this->upload->do_upload('txtattachments')) {
                //no file uploaded or failed upload
                $error = array('error' => $this->upload->display_errors());
            } else {
                $dat6 = array('upload_data' => $this->upload->data());
                $this->resize($dat6['upload_data']['full_path'], $dat6['upload_data']['file_name']);
            }
            if (empty($dat6['upload_data']['file_name'])) {
                $merimage = '';
            } else {
                $merimage = $dat6['upload_data']['file_name'];
            }
        $data7 = array(
            'qub_merchantid' => $this->input->post('merchant'),
            'qub_customerid' => $this->input->post('customer'),
            'qub_shipcontactname' => $this->input->post('txtShipContactName'),
            'qub_shipaddress' => $this->input->post('txtAddress'),  
            'qub_shiplocation'=>$this->input->post('txtLocation'),  
            'qub_telephone'=>$this->input->post('txtTelephone'), 
            'qub_mobile'=>$this->input->post('txtMobile'), 
            'qub_email'=>$this->input->post('txtEmail'), 
            'qub_payterms'=>$this->input->post('txtPayterms'),
            'qub_paymode'=>$this->input->post('txtPaymode'),
            'qub_deliveryperiod'=>$this->input->post('txtDelivery'),
            'qub_incoterms'=>$this->input->post('txtIncoterms'),
            'qub_attachment'=>$merimage,
            'qub_expiry'=>$this->input->post('txtExpiry'),
            'qub_permission'=>0,
            'qub_dated'=>time(),
            'qub_ipadd'=>$ip
        );

        $inserted_id = $this->quotemerchant_model->forminsert($data7);
        $unitprice = $this->input->post('txtUnitprice');
        $quantity = $this->input->post('txtQuantity');
        $discount = $this->input->post('txtDiscount');
        $totalprice = $quantity * $unitprice;
        $effective = $totalprice - $discount;
        $vat = $this->input->post('txtVAT');
        $gst = $this->input->post('txtGST');
        $service = $this->input->post('txtServicetax');
        $octroi = $this->input->post('txtOctroi');
        $excise = $this->input->post('txtExcise');
        $shipping = $this->input->post('txtShipping');
        $other = $this->input->post('txtOthertaxcharges');
        $dats['gstamount'] = ($effective * $gst) / 100;
        $dats['servicetaxamt'] = ($effective * $service) / 100;
        $dats['octroiamt'] = ($effective * $octroi) / 100;
        $dats['exciseamt'] = ($effective*$excise) / 100;

        $dats['vatamt'] = ($effective + $dats['exciseamt']) * $vat / 100;
        $dats['netamount'] = $effective + $dats['gstamount'] + $dats['octroiamt'] + $dats['servicetaxamt'] + $dats['exciseamt'] + $other + $dats['vatamt']+ $shipping;
        $sellingprice= $dats['netamount'];
                 $data8=array(
            'qud_qubid' => $inserted_id,
            'qud_productid' => $this->input->post('sbProduct'),
            'qud_unit' => $this->input->post('sbUnit'),
            'qud_quantity' => $this->input->post('txtQuantity'),  
            'qud_unitprice'=>$this->input->post('txtUnitprice'),  
            'qud_vat'=>$this->input->post('txtVAT'), 
            'qud_gst'=>$this->input->post('txtGST'), 
            'qud_servicetax'=>$this->input->post('txtServicetax'), 
            'qud_octroi'=>$this->input->post('txtOctroi'),
            'qud_excise'=>$this->input->post('txtExcise'),
            'qud_othertaxcharges'=>$this->input->post('txtOthertaxcharges'),
            'qud_shipping'=>$this->input->post('txtShipping'),
            'qud_discount'=>$this->input->post('txtDiscount'),
            'qud_totalprice'=>$totalprice,
            'qud_sellingprice'=>$sellingprice,
            'qud_requirementid'=>$this->input->post('txtRequirement'),
            'qud_rfqid'=>$this->input->post('txtRFQid'),
            'qud_enduser'=>$this->input->post('txtEnduser'),
            'qud_merchantid'=>$this->input->post('merchant'),
            'qud_customerid'=>$this->input->post('customer'), 
            'qud_dated'=>time(),
            'qud_ipadd'=>$ip,
        );

                $admid=  $this->session->userdata('moderId');

           $revicedata=array(
            'rev_processtype'=>'1',
            'rev_actionlevel'=>'new',
            'rev_processdataid' => $inserted_id,
            'rev_admtype' =>2,  
            'rev_admid'=>$admid,  
             'rev_dated'=>time(),
            'rev_ipadd'=>$ip,
            );
         //  echo '<pre>'; print_r($this->session->all_userdata());exit;
           $reviceinsert=$this->quotemerchant_model->insertreviceaction($revicedata); 




          $detail=$this->quotemerchant_model->forminsertdetail($data8);
         $response=array('id'=>$inserted_id,'message'=>"inserted successfully"); 
         echo json_encode($response); 
         die();

    }

看法
   <script type="text/javascript">

    $('#merchantsubmit').click(function () {

 var formData = new FormData($('#myform')[0]);
        $.ajax({
            url: "<?php echo base_url() ?>moderator/QuoteMerchant/addmerchant",
            type: 'POST',
           data: formData,
           dataType:"Json", 
                mimeType: "multipart/form-data",
                contentType: false,
                cache: false,
                processData: false,
            success: function(data) {
                var last_inserted_id = data.id;
                window.location.href ="<?php  echo base_url() ?>moderator/QuoteMerchant/viewmerchant/"+last_inserted_id;
                // window.location.href ="<?php //echo base_url()             ?>moderator/RFQ/viewrfq/"+  form_data.reqid;
//      alert('added Successfully');
            }
        });

        return false;
    });



</script>

模型
public function forminsert($data7)
{
     $this->db->insert('jil_quotemjbrief',$data7);
     return $this->db->insert_id();
}
public function forminsertdetail($data8) {
     $this->db->insert('jil_quotemjdetail',$data8);
     return $this->db->insert_id();
}

最佳答案

使用此代码

鉴于

 <style>
  .loading {
  display: none;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background: #fff url("<?php echo base_url();?>images/loading.gif") no-repeat center center;
  opacity: .2;
  z-index: 20140628;
  height:1100px;
}

把div
<div class="loading"></div>

和 Ajax
    <script>
        function getValue(val) {
            //alert(val);
$('.loading').show();
            $.ajax({
                type: "POST",
                url: "<?php echo base_url() ?>moderator/QuoteMerchant/createquotemerchant",
                data: {from: "ajax", reqid: val},
                success: function (data) {
                    $("#content").html(data);
                }
            });
        }
    </script>

关于php - 如何避免在双击按钮上插入多个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35519290/

相关文章:

php - 如何停止显示敏感错误?

ajax - AJAX 请求可以使用链接预取吗?

php - jquery/ajax 长轮询 php mysql codeigniter

php - 如何将PHP imagecopymerge函数创建的图像存储在mysql数据库中

javascript - 如何将事件类添加到菜单项

php - 如何在 CodeIgniter 中为多个 Hook 使用同一个对象?

javascript - JSON 数组 - 使用 Javascript 提取数据

php - CodeIgniter - 如何将表单中的值发布为 NULL 而不是 0

PHP exec 不返回特定程序的字符串

javascript - Jquery $.ajax() 调用将关联数组与其他参数传递给 MVC Controller 失败