Всем доброго времени суток! Есть такой код: Спойлер: php PHP: if(isset($_POST['submit2'])){ if(!empty($_POST["kolvo2"])){ $out = array(); for($i = 0; $i < count($_POST["kolvo2"]); $i++){ if($_POST["kolvo2"][$i]!=""){ $kolvo2 = @$_POST["kolvo2"][$i]; $roditel = @$_POST["roditel"][$i]; $ruz = $_POST["ruz"]; $tip = $_POST["tip"]; $out[] = "('".$kolvo2."', '".$roditel."', '".$ruz."', '".$tip."')"; }} if(!empty($out)){ $query = "INSERT INTO `sklad` (`kolvo`, `roditel`, `ruz`, `tip`) VALUES ".implode(",", $out); //$res = mysqli_query($db, $query); //echo mysqli_error(); var_dump($query); }}} Вот результат: Спойлер: var_dump string(1064) "INSERT INTO `sklad` (`kolvo`, `roditel`, `ruz`, `tip`) VALUES ('0', 'СП 8008', '2020-01-17', 'Приход'), ('0', 'СП 8008', '2020-01-17', 'Приход'), ('0', 'СП 8008', '2020-01-17', 'Приход'), ('0', 'СП 8008', '2020-01-17', 'Приход'), ('0', 'СП 0220', '2020-01-17', 'Приход'), ('0', 'СП 0220', '2020-01-17', 'Приход'), ('0', 'СП 0220', '2020-01-17', 'Приход'), ('0', 'СП 0220', '2020-01-17', 'Приход'), ('0', 'СП 0220', '2020-01-17', 'Приход'), ('0', 'СП 09', '2020-01-17', 'Приход'), ('0', 'СП 09', '2020-01-17', 'Приход'), ('0', 'СП 09', '2020-01-17', 'Приход'), ('0', 'СП 09', '2020-01-17', 'Приход'), ('0', 'СП 15', '2020-01-17', 'Приход'), ('0', 'СП 15', '2020-01-17', 'Приход'), ('0', 'СП 15', '2020-01-17', 'Приход'), ('0', 'СП 15', '2020-01-17', 'Приход'), ('0', 'Сп 5005', '2020-01-17', 'Приход'), ('0', 'Сп 5005', '2020-01-17', 'Приход'), ('0', 'Сп 5005', '2020-01-17', 'Приход'), ('0', 'Сп 5005', '2020-01-17', 'Приход')" Вопрос: Как мне исключить строки которые "$kolvo2" = 0 (не хочу сервер по просту загрузить...). Спасибо!
условие создай и проверяй значение переменной --- Добавлено --- PHP: array_diff ( $_POST["kolvo2"], [ null ] ) тестируй
Можно примерчик?) Я, если честно не понял как и где условия создать(. Вот что я попробовал: PHP: $a = array_diff($_POST["kolvo2"],[null]); if ($a >0){ ... } Нечего не получилось.
а почему нельзя сделать так (переписываем 10 строку): Код (Text): if (intval($kolvo2) > 0) { $out[] = "('".intval($kolvo2)."', '".$roditel."', '".$ruz."', '".$tip."')"; }
Код конечно жесть! Может логику стоит пересмотреть? И тогда и код станет короче и все эти трудности уйдут. Вот даже начало кода, почему нельзя написать вот так? PHP: if(isset($_POST['submit2']) && !empty($_POST["kolvo2"])){ # code... } Если тебе не нужны те значения в которых $kolvo2 = 0 можно сделать и так: PHP: if($kolvo2 == 0) continue; PS: еще интересно примеры того, что там в POST приходит.
Мне надо за тебя создать тестовый скрипт ? создать POST имитацию данных в массиве ? почитать в документации ЧТО ЗА ФУНКЦИЯ array_diff ? не нужна эта функция
Я ответил не раскрывая спойлеры, ибо array_filter это буквально что просят в заголовке. Но конечно логичнее не добавлять нули сразу, чем добавлять, а потом избавляться.