简体   繁体   English

HTML表单输入到PHP Array。 并非所有值都已过帐

[英]HTML form inputs to PHP Array. Not all values are posted

So I have this form: 所以我有这种形式:

 <form data-ajax="false" name="frm" action="cmd_go.php" method="post" > <input type="hidden" name="cmd" value="insertarlineapedidomultiple"> <input type="hidden" name="mod" value="yes"> <!--<input id="insertList" type="hidden" name="insertList" value="">--> <input type="hidden" name="o" value="<?php echo $o ?>"> <div id="div_lista_familias" data-role="collapsibleset" data-content-theme="a" data-iconpos="right"> </div> <input class="insertar btn-azul ui-btn ui-corner-all" data-role="none" type="submit" value="Insertar"/> </form> 

Then we have some Javascript code to populate the form content after calling a web service: 然后,在调用Web服务之后,我们有一些Javascript代码来填充表单内容:

 function listaProductos(alb, fam){ var ok = false; $.ajax({ type: 'GET', url: url_servicio + alb + '/' + fam + '/productos', dataType: "json", // data type of response //async: false, error: function(){ ok = false; }, success: function(data){ var content; var acum = 0; for(i=0; i<data.length; i++){ ok = true; var qty = get_item_qty_inline(data[i].itemid); var qty2 = get_item_qty2_inline(data[i].itemid); var qty3 = get_item_qty3_inline(data[i].itemid); var dto = get_item_dto1_inline(data[i].itemid); content = '<fieldset class="ui-grid-d">'; content += '<div class="ui-block-a"><label for="name">'; content += data[i].itemid + ' ' + data[i].nombre + '</div>'; content += '<div class="ui-block-c ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset""><input type="number"'; content += ' name="cantidad[]" pattern="[0-9]*" id="number-pattern"'; content += ' value="' + qty + '" placeholder="Uds1" onfocus="this.oldvalue = this.value;" onchange="onChangeQty(this); this.oldvalue = this.value;"></div>'; content += '<div class="ui-block-b ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset""><input type="number" name="dtoporc1[]" pattern="[0-9]*" id="number-pattern"' content += ' value="' + dto + '" placeholder="%Dto1"></div>'; content += '<div class="ui-block-d ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset""><input type="number"'; content += ' name="cantidad2[]" pattern="[0-9]*" id="number-pattern"'; content += ' value="' + qty2 + '" placeholder="Uds2" onfocus="this.oldvalue = this.value;" onchange="onChangeQty(this); this.oldvalue = this.value;"></div>'; content += '<div class="ui-block-e ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset""><input type="number"'; content += ' name="cantidad3[]" pattern="[0-9]*" id="number-pattern"'; content += ' value="' + qty3 + '" placeholder="Uds3" onfocus="this.oldvalue = this.value;" onchange="onChangeQty(this); this.oldvalue = this.value;"></div>'; content += '<input type="hidden" name="idalbaran[]" value="' + alb +'">'; content += '<input type="hidden" name="itemid[]" value="' + data[i].itemid +'">'; content += '<input type="hidden" name="famalbaran[]" value="' + fam +'">'; content += '<input type="hidden" name="itemdesc[]" value="' + data[i].nombre +'">'; content += '<input type="hidden" name="precioventa[]" value="' + data[i].precio + '">'; content += '<input type="hidden" name="dtoporc2[]" value>'; content += '<input type="hidden" name="dtoporc3[]" value>'; $('#'+fam.replace(/ /g, '_')+'_content').append(content); acum += parseFloat(qty || 0) + parseFloat(qty2 || 0) + parseFloat(qty3 || 0); $('#'+fam.replace(/ /g, '_')+' .ui-li-count').html(acum); } }, complete: function(data, status){ if (!ok){ $('#'+fam.replace(/ /g, '_')).remove(); } } }); } 

Finally, this is the PHP code we have in cmd_go.php 最后,这是我们在cmd_go.php中拥有的PHP代码

//GET variables
 if(isset($_GET)){
  $params = array_keys($_GET);
  for ($i=0;$i<count($params);$i++)
    if(isset($_GET[$params[$i]])){
      $nv=$params[$i];
      $$nv=$_GET[$params[$i]];
   }
 } 

 //POST variables
 if(isset($_POST)){
  $params = array_keys($_POST);
  for($i=0;$i<count($params);$i++)
    if(isset($_POST[$params[$i]])){
      $nv=$params[$i];
      $$nv=$_POST[$params[$i]];
      //print "$nv : ".$$nv.'<br />';
   }
 }
 var_dump($itemid);

The problem is that not all values are posted, because our $itemid array only has 91 elements, when our web service returns about 400. Out HTML form is correctly displayed with all 400 items, but out PHP var_dump returns: 问题在于,并非所有值都被发布,因为当我们的Web服务返回大约400时,我们的$itemid数组仅包含91个元素。正确显示所有400个项目的HTML格式,但是PHP var_dump返回:

array(91){[0]=>string(6) "173771" [1]=>string(6) "173772" [2]=>string(6) "564814"...[90]=>string(6) "548115"}

Any ideas on why POST could be taking only 91 records?? 关于POST为什么只记录91条记录的任何想法?

You need to check max_input_vars value in php.ini. 您需要检查php.ini中的max_input_vars值。 It can lead to such behavior. 它可能导致这种行为。

http://php.net/manual/en/info.configuration.php#ini.max-input-vars http://php.net/manual/zh/info.configuration.php#ini.max-input-vars

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM