PHP Query POST foreach仅显示表单中80个选项中的77个

时间:2019-02-28 18:15:15

标签: php mysqli

我有一个从mysql数据库查询的表单。这个特定的输出79行。当我提交然后尝试使用foreach()拆分成一个数组时,它将最大显示77行。无论我激活哪个部分,甚至添加新的部分。

$counterVar=0;

foreach($_POST['count'] as $row=>$value) { 

    if(number_format(($_POST['partsprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '') > '0.00'){
        //$row_data[] = "(DEFAULT, '".$count[$row]."', '".$rma[$row]."', '".$ln[$row]."', '0', '".$item_key[$row]."', '".$qty[$row]."', '".$part_n[$row]."', '".$desc[$row]."', '".number_format($part_price1[$row], 2, '.', '')."', '".number_format($roll_out1[$row], 2, '.', '')."', '".number_format(($part_price1[$row] * $qty[$row]), 2, '.', '')."', '".number_format(($roll_out1[$row] * $qty[$row]), 2, '.', '')."', '".$cost_type[$row]."', '".$stkrm[$row]."', '".$bin[$row]."','5')<BR>";
        $row_data[] = "(DEFAULT, '".$_POST['count'][$row]."', '".$_POST['rma'][$row]."', '".$_POST['linenum'][$row]."', '0', '".$_POST['item_key'][$row]."', '".$_POST['new_qty'][$row]."', '".$_POST['part_num'][$row]."', '".$_POST['part_desc'][$row]."', '".number_format($_POST['partsprice'][$row], 2, '.', '')."', '".number_format($_POST['rolloutprice'][$row], 2, '.', '')."', '".number_format(($_POST['partsprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."', '".number_format(($_POST['rolloutprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."', '".$_POST['cost_type'][$row]."', '".$_POST['stkrm'][$row]."', '".$_POST['bin'][$row]."','5')<BR>";
    }
    $counterVar++; 
}

更新代码

$counterVar = 0;
$row_data   = [];

$aEach = isset($_POST['count']) ? (array)$_POST['count'] : []; 

foreach($aEach as $row => $value) {

     $fPartsPrice = isset($_POST['partsprice'][$row]) ? (float)$_POST['partsprice'][$row] : 0; 
     $fNewQnty    = isset($_POST['new_qty'][$row]) ? (float)$_POST['new_qty'][$row] : 0;



    if(floatval($fPartsPrice * $fNewQnty) > 0) {

        $row_data[] = "(DEFAULT, '".$_POST['count'][$row]."',
         '".$_POST['rma'][$row]."', '".$_POST['linenum'][$row]."', '0', 
         '".$_POST['item_key'][$row]."', '".$_POST['new_qty'][$row]."',
         '".$_POST['part_num'][$row]."', '".$_POST['part_desc'][$row]."',
         '".number_format($_POST['partsprice'][$row], 2, '.', '')."', 
         '".number_format($_POST['rolloutprice'][$row], 2, '.', '')."',
         '".number_format(($_POST['partsprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."',
         '".number_format(($_POST['rolloutprice'][$row] * $_POST['new_qty'][$row]), 2, '.', '')."', 
         '".$_POST['cost_type'][$row]."', '".$_POST['stkrm'][$row]."', '".$_POST['bin'][$row]."','5')<BR>";
    }


$counterVar++; 

}

$values=implode(",",$row_data);
echo $values;
echo "<br>";
echo 'items: '.count($row_data).'<br />'; 
echo 'counter: '.$counterVar.'<br />'; `

1 个答案:

答案 0 :(得分:0)

不知道$_POST['count']到底包含什么,但是将带格式的数字与字符串进行比较并不是一个好主意。顺便说一句,您应该检查并验证您的输入变量。

我的修正建议是:

$counterVar = 0;
$row_data   = [];

$aEach = isset($_POST['count']) ? (array)$_POST['count'] : []; 

foreach($aEach as $row => $value) { 

    $fPartsPrice = isset($_POST['partsprice'][$row]) ? (float)$_POST['partsprice'][$row] : 0; 
    $fNewQnty    = isset($_POST['new_qty'][$row]) ? (float)$_POST['new_qty'][$row] : 0; 

if(floatval($fPartsPrice * $fNewQnty) > 0) {
        $row_data[] = /* YOUR STUFF*/;
    }

    $counterVar++; 
}
echo 'items: '.count($row_data).'<br />'; 
echo 'counter: '.$counterVar.'<br />'; 

不好意思格式化。似乎所见即所得不喜欢我:-) =>现在,如果您的$row_data中缺少一行,则计算$fPartsPrice * $fNewQnty会给您零或更少的分数。