PHP Query POST foreach показывает только 77 из 80 вариантов из формы - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть форма, которая запрашивает из базы данных 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 голосов
/ 28 февраля 2019

Понятия не имею, что именно содержит $_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 />'; 

Прошу прощения за плохое форматирование. Кажется, wysiwyg мне не нравится :-) => Теперь, если строка отсутствует вваш $row_data, расчет $fPartsPrice * $fNewQnty дает вам ноль или меньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...