сформировать цикл while, застрявший на первом объекте массива - PullRequest
0 голосов
/ 30 июня 2019

У меня есть цикл while, который проходит через подписку пользователя, затем через корзины покупок этой подписки и через заказанные продукты этой корзины. У меня есть форма с меткой выбора на каждом продукте, которая позволяет пользователю изменять количество заказанного продукта. Проблема: когда выбор сделан, он работает только для первого продукта. Как получить уникальное имя для каждого продукта в поле ввода имени в форме? И как мне поднять это на стороне сервера? К счастью, большинство решений, с которыми я сталкивался, пропустили, как их найти на стороне сервера.

Я попытался добавить переменную product_id ко входному имени тега select без особой удачи. Я также попытался объявить счетчик перед циклом while и добавить его к имени тега select. тоже не повезло


// 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. скрипт для автоматической отправки на обмен

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);
}

Когда форма отправлена, все работает нормально, если это первый элемент продукта в массиве. Если бы я передавал переменные, используя метод заголовка, он правильно нацелен на нужные элементы, но я хотел бы использовать тег выбора, поэтому предпочтительнее использовать метод формы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...