while循环内的表单卡在第一个数组对象上

时间:2019-06-29 22:09:25

标签: php forms while-loop

我有一个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'])."&nbsp";                      
}

// 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方法是更可取的

0 个答案:

没有答案