MySQL не обновляет все записи из цикла - PullRequest
0 голосов
/ 22 апреля 2020

Я разрабатываю POS с использованием JQuery и AdoDB, у меня есть эта функция l oop

function actualizarVentaProducto() {

    var idProducto = $(".idProducto");
    var statusVenta = $('#statusVenta').val();
    var cantidad = $(".nuevaCantidadProducto");
    var tipoPrecio = $('#tipoPrecio').val();
    var precioMayoreo = $(".precioMayoreo");
    var precioMenudeo = $(".precioMenudeo");
    var existencia = $(".existencia");

    for (var i = 0; i < idProducto.length; i++) {

        var data = new FormData();
        data.append('opc', 3);
        data.append('statusVenta', statusVenta);
        data.append('idProducto', idProducto[i].value);
        data.append('cantidad', cantidad[i].value);
        data.append('tipoPrecio', tipoPrecio);
        data.append('precioMayoreo', precioMayoreo[i].value);
        data.append('precioMenudeo', precioMenudeo[i].value);
        data.append('existencia', existencia[i].value);
        var url = "../controlador/ventas.controlador.php";
        $.ajax({
            type: "POST",
            url: url,
            data: data,
            cache: false,
            processData: false,
            contentType: false,
            success: function (data) {
                $('#debug').append(data);
            },
            error: function (ts) {
                alert(ts.responseText)
            }
        });
    }
    $('#debug').append('--------------------------------------------------------------------------------------------------------------------------------------------');
}

и php.

public function mdlActualizarDetalleVentaProductos($statusVenta, $idProducto, $cantidad, $tipoPrecio, $precioMayoreo, $precioMenudeo, $existencia) {
        $nuevaExistencia = $existencia - $cantidad;
        if ($tipoPrecio == 'Mayoreo') {
            $precioProducto = $precioMayoreo;
        } else {
            $precioProducto = $precioMenudeo;
        }

        $total = $cantidad * $precioProducto;

        $sql = "UPDATE detalle_venta_productos SET cantidad = ?, precio_producto_venta = ?, total = ? WHERE id_venta = ? AND id_producto = ?";
        $prp = $this->db->Prepare($sql);
        $this->db->Execute($prp, array($cantidad, $precioProducto, $total, $statusVenta, $idProducto));
        $afectados = $this->db->affected_rows();

        $sql2 = "UPDATE productos SET existencia = ? WHERE id_producto = ?";
        $prp2 = $this->db->Prepare($sql2);
        $this->db->Execute($prp2, array($nuevaExistencia, $idProducto));
//        echo 'UPDATE detalle_venta_productos SET cantidad = ?, precio_producto_venta = ?, total = ? WHERE id_venta = ? AND id_producto = ?<br>';
//        echo $cantidad . '-' . $precioProducto . '-' . $total . '-' . $statusVenta . '-' . $idProducto;
//        return "UPDATE detalle_venta_productos SET cantidad = $cantidad, precio_producto_venta = $precioProducto, total = $total WHERE id_venta = $statusVenta AND id_producto = $idProducto;<br>$tipoPrecio<br>";
        print $afectados . '<br>';
    }

Я вернулся запрос, чтобы проверить, если это правильно, и все правильно, но проверено в базе данных и не все, где успешно обновлено. В моей таблице установлен движок InnoDB, и SELECT @@ autocommit возвращает 1, Можете ли вы помочь мне найти мою ошибку?

...