将while循环创建的多个输入发送到PHP

xzabzqsa  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(113)

我的问题是,我创建了一个购物车商店的产品保存在一个数据库中,然后我创建了一个while打印产品的信息(名称,流派,价格),其次是他们的产品数量一个人想买。
问题是只读取创建的多个输入中的一个,并使用该数量进行计算,而不是每个创建的输入。因此,我很高兴,如果你能帮助我在修复的部分代码是导致问题。
如果有什么不清楚的地方,这是我的第一篇文章。
这是密码
打印信息的PHP文件:

<tbody>
<tr>
    <?php
    $conexion  = mysqli_connect("localhost", "root", "", "llanoponte");
    $sql       = "SELECT * FROM libros";
    $resultado = $conexion->query($sql);
    $x         = 0;

    if ($resultado->num_rows > 0) {
        while ($row = $resultado->fetch_assoc()) {
            $valor = $row['Precio'];
            echo "<td>", $row['Titulo'], "</td>
                    <td>", $row['Autor'], "</td>
                    <td>", $row['Genero'], "</td>
                    <td>", $valor, " €", "</td>
                    <td>", "<input type='number' name='cantidad' class='cantidad' value='0' id='<?php echo $x ?>'>", "</td>
                </tr>";
            $x++;
        }
    } else {
        echo "Sin resultados";
    }
    
    $conexion->close();
    ?>
</tr>
</tbody>

这里是调用函数的按钮

<input type="button" name="actualizar" class="calcular" onclick="Datos()" id="boton1" value="Calcular">

将插入的数量发送到执行以下操作的PHP文件的脚本:

function Datos() {

    v1 = $("input[name='cantidad']").val();

    $.ajax({
        url: 'total.php',
        type: 'post',
        data: {cantidad: v1},
        success: function (respuesta) {
            $('#resultados').html(respuesta);
        }
    })
}

计算总数并将值返回给主体的PHP:

include('conexiones.php');

$multi1    = $_POST['cantidad'];
$conexion  = mysqli_connect("localhost", "root", "", "llanoponte");
$sql       = "SELECT * FROM libros";
$resultado = $conexion->query($sql);

if ($resultado->num_rows > 0) {
    $total    = 0;

    while ($row = $resultado->fetch_assoc()) {
        $total = ($row['Precio'] * $multi1) + $total;
    }

    echo '<p>', $total, ' € ', '</p>';

} else {
    echo 'Sin resultados';
}

$conexion->close();

这就是总价格应该出现的地方

<div class="texto2">
            <h1>Total</h1>
            <div id="resultados">
                <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
            </div>
        </div

我尝试将ID更改为一个元素,该元素的值将在while循环的每个循环中增加,但随后我遇到了通过脚本将输入及其值发送给其他PHP的障碍。即使尝试从具有特定id的元素获取值更改为name,它仍然捕获创建的第一个输入的值,而不是其余的值。

4uqofj5v

4uqofj5v1#

我认为你必须循环遍历$("input[name='cantidad']")选择器返回的对象,并将每个值放入一个数组中,以传递给 AJAX 调用::

let data = [];
$("input[name='cantidad']").each((k, v) => data.push(v.value));

在这种情况下,你也可以使用ID:

let data = [];
$("input[name='cantidad']").each((k, v) => {let o = {}; o[v.id] = v.value; data.push(o);});

我建议你将记录的主键分配给输入id,而不是分配 $x 计数器:这样你就可以将每本书的价格乘以所选书籍的数量,与所选书籍及其从DB读取的价格进行交集(使用多个查询或数组比较)

相关问题