我有一个while循环,该循环遍历用户的订阅,然后遍历该订阅的购物车,再通过该购物车的订购产品。我在每个产品上都有一个带有选择标签的表格,允许用户更改订购产品的数量。问题:做出选择后,它仅适用于第一个产品。如何在表单的输入名称字段中为每个产品获得唯一的名称?以及如何在服务器端取货?我碰到的大多数解决方案都跳过了如何在服务器端使用它,这是我的运气。
我尝试在没有太多运气的情况下将product_id变量附加到选择标记输入名称。 我还尝试过在while循环之前声明一个计数器,并将其附加到选择标记名称上。也不幸运
// 1。在索引页面上
$Execute2=mysqli_query($conn,$ViewQuery2);
$last_subscription = null;
$last_product_cart = null;
$last_order = null;
while ($row = mysqli_fetch_assoc($Execute2)) {
// display active subscriptions
if ($row['subscription_id'] !== $last_subscription) {
$last_subscription = $row['subscription_id'];
echo "Subscription: ".'<span class="badge badge-light">' .$row['subscription_name'];
}
// display carts
if ($row['product_cart_id'] !== $last_product_cart) {
$last_product_cart = $row['product_cart_id'];
echo "CartNumber: ".($row['product_cart_id'])." ";
}
// display ordered products
if ($row['order_id'] !== $last_order) { $last_order=$row['order_id'];
echo $row['product_name'];
echo '<span>'.($row['qty']); echo '</span>';
?>
<form id="UpdateproductOrderqtyform" method="POST">
<div class="input-group form">
<input name="OrderId" type='hidden' value='<?php echo ($row["order_id"])?>'>
<select name="productOrderQtyUpdate" class="form-control form-control-sm h6 ml-4" style="height:20px;border: 1px solid rgb(204, 204, 204);" onchange="SubmitForm('UpdateproductOrderqtyform');"> <?php
for($x=1;$x<=30;$x++){
echo "<option>$x</option>";
} ?> </select>
</div>
</form>
<?php }
} // endwhile
// 2。自动提交onchange的脚本
function SubmitForm(UpdateproductOrderqtyform) {
var oForm = document.getElementById(UpdateDishOrderqtyform);
if (oForm) {
oForm.submit();
}
else {
alert("DEBUG - could not find element " + UpdateproductOrderqtyform);
}
}
// 3。在服务器端
if(isset($_POST['productOrderQtyUpdate'])){
global $conn;
$NewQuantity=$_POST["productOrderQtyUpdate"];
$productOrderID=$_POST["OrderId"];
$QueryUpdateQuantity='UPDATE product_orders SET qty="$NewQuantity" WHERE order_id="$productOrderID"'; $ExecuteQueryUpdateQty=mysqli_query($conn,$QueryUpdateQuantity);
}
提交表单后,如果它是数组中的第一个产品,则一切正常。如果我使用标头方法传递变量,那么它可以正确地定位正确的项目,但是我想使用select标记,因此,使用form方法是更可取的