How to parse large data via POST query

谁说我不能喝 提交于 2019-12-24 08:30:07

问题


I am creating a webpage having Excel like features to create a Plan.For this i need to fill an initial form and click on submit button , then submit the form using ajax to a server side PHP script which inserts these records to a Mysql table. But the issue is i can only transfer 1-2 records of table using the POST Query as there is a limit to it.What should i do in this case?Is there any other way of doing it without expanding the POST query limit?

My Front end code(.js)

</script>
buttons.save.addEventListener('click', function() {
    var r1 = hot.countRows() - hot.countEmptyRows() - 1;
    var c1 = hot.countCols()- 1 ;
    var data = String(hot.getData(0,0,r1,c1));
    data = data.replace(/,/g,'');
    document.getElementById('all_data').value= JSON.stringify(hot.getData(0,0,r1,c1));
    document.getElementById('colheaders').value=JSON.stringify(hot.getColHeader());
    console.log(hot.getInstance());
    var testplan_name = document.getElementById('feature_name').value;
    var product = document.getElementById('product').value;
    var release = document.getElementById('release').value;
    var pv_engg = document.getElementById('pv_engg').value;
    var pe_engg = document.getElementById('pe_engg').value;
    var rd_engg = document.getElementById('rd_engg').value;
    var tp_completion = document.getElementById('tp_completion').value;
    var at_completion = document.getElementById('at_completion').value;
    var all_headers = document.getElementById('colheaders').value;
    var all_data = document.getElementById('all_data').value;
    var maker = document.getElementById('maker').innerHTML;
    var datastring = 'testplan_name='+testplan_name+'&product='+product+'&release='+release+'&pv_engg='+pv_engg+'&pe_engg='+pe
_engg+'&rd_engg='+rd_engg+'&tp_completion='+tp_completion+'&at_completion='+at_completion+'&headers='+all_headers+'&all_data='
+all_data+'&maker='+maker;
   if(testplan_name=="" || pv_engg =='' || pe_engg== '' || rd_engg== '' || product=='' || release=='') {
      else if(data=="") {
      alert("For creating a testplan , you need to fill this table.");
    }
    else {

    alert(datastring);
     $.ajax({
     url :"save_create_pro.php",
     type :"POST",
     data : datastring,
     cache : false,
     success :function(result) {
       console.log(result);
       alert(result);
       alert("Form Submitted successfully");
     },
     error: function(jqXHR, textStatus, errorThrown) {
                   console.log(textStatus, errorThrown);
            }
     });
   }
   return false;

});
 });
</script>

My Backend php code:

<?php
$dbh=mysql_connect('noiwebfarmo','abc','xyz');
if(! $dbh ) {
          die('Could not connect: ' . mysql_error());
}
$database=mysql_select_db('testmohit');
$testplan_name=$_POST['testplan_name'];
$product=$_POST['product'];
$release=$_POST['release'];
$pv_engg=$_POST['pe_engg'];
$pe_engg=$_POST['pe_engg'];
$rd_engg=$_POST['rd_engg'];
$tp_completion=$_POST['tp_completion'];
$at_completion=$_POST['at_completion'];
$maker=$_POST['maker'];
$headers=stripslashes($_POST['headers']);
$all_data = stripslashes($_POST['all_data']);# to remove \ before " that occur when parsed through ajax
$headers=preg_replace('/\["/','',$headers);
$headers=preg_replace('/"\]/','',$headers);
$headers=split('","',$headers);
for($j=0;$j<count($headers);$j++) {
      $headers[$j]= str_replace(' ','_',strtolower("$headers[$j]"));
}
$date=date('Y-m-d');

$all_data=preg_replace('/\[\["/','',$all_data);
$all_data=preg_replace('/"\]]/','',$all_data);
$rows_data=split('"\],\["',$all_data);
or($i=0;$i<count($rows_data);$i++) {
   $data[$i] = split('","',$rows_data[$i]);

}
$result = array();
foreach($data as $key => $val){
    $temp = array();
    foreach($val as $k => $v){
       $temp[$headers[$k]] = $v;
    }
    $result[] = $temp;
}
#print $all_data;
print count($result);
print_r($result);
for($i=0;$i < count($result);$i++) {
          $temp = $result[$i];
          $query = "INSERT INTO testplans (testplan_name,product,pro_release,percent_tpcompletion,percent_atcompletion,pv_engineer,rnd_engg,pe_engg,tc_name,cell_name,customer_name,flops,title,status,mfix_ccr,test_scenerio,expected_results,ccr_no,ccr_status,remarks,create_date,maker) VALUES ('$testplan_name','$product','$release','$tp_completion','$at_completion','$pv_engg','$rd_engg','$pe_engg','$temp[testcase_name]','$temp[cell_name]','$temp[customer]','$temp[flops]','$temp[title]','$temp[status]','$temp[mfix_ccr]','$temp[scenerio_brief_description]','$temp[expected_results]','$temp[ccr_no]','$temp[ccr_status]','$temp[remarks]','$date','$maker')";
          mysql_select_db('testmohit');
          $enter=mysql_query($query,$dbh);
          if(! $enter) {
           die('Could not enter data: ' . mysql_error());
          }
}

      # echo "$query Entered data successfully";
mysql_close($dbh);
?>

Please provide a solution to insert large no. of rows of handson table without expanding the size of query string .What can be the solution of this problem.

Thanks in advance.

来源:https://stackoverflow.com/questions/45581331/how-to-parse-large-data-via-post-query

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!