我的问题是,我创建了一个购物车商店的产品保存在一个数据库中,然后我创建了一个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,它仍然捕获创建的第一个输入的值,而不是其余的值。
1条答案
按热度按时间4uqofj5v1#
我认为你必须循环遍历
$("input[name='cantidad']")
选择器返回的对象,并将每个值放入一个数组中,以传递给 AJAX 调用::在这种情况下,你也可以使用ID:
我建议你将记录的主键分配给输入id,而不是分配 $x 计数器:这样你就可以将每本书的价格乘以所选书籍的数量,与所选书籍及其从DB读取的价格进行交集(使用多个查询或数组比较)