Удаление товара из корзины

У меня есть корзина, которая работает почти идеально. Однако я хочу иметь возможность удалять товары, не устанавливая количество на 0. Таким образом, у каждого товара в корзине есть своя собственная кнопка удаления с именем = 'удалить'.

Теперь у меня есть этот код в верхней части страницы. У меня уже есть кнопка "Обновить корзину", которая является верхней частью кода. Нижняя часть кода - это код кнопки удаления.

<?php

 error_reporting(E_ALL); ini_set('display_errors', 1);
 
 if(isset($_POST['submit'])){
  
  foreach($_POST['quantity'] as $key => $val) {
   if($val==0) {
    unset($_SESSION['cart'][$key]);
   }else{
    $_SESSION['cart'][$key]['quantity']=$val;
   }
  }
  
 }
 
 if(isset($_POST['delete'])){
  
  foreach($_POST['quantity'] as $key => $val) {
    unset($_SESSION['cart'][$key]);
   }
  }

?>

<h2>Your shopping cart</h2>
 <p class="lead">Since the beginning, Movingscales™ has become one of the world's biggest scale models sellers with thousands of orders a year. We sell scale models in every kind of transportation, from motorcycles to planes. We don't just sell these products, but we are also involved in the production and design of the models. This is the reason why our products are premium-quality scale models. You can buy the products from our Movingscales™-collection through our online store or in one of our stores around the world.</p>
<form method="post" action="thecollection.php?page=cart">
    
 <table class="table table-striped">
     
  <tr>
      <th>Product</th>
      <th>Quantity</th>
      <th>Price</th>
      <th>Total price</th>
   <th></th>
  </tr>
  
  <?php
  
   $sql="SELECT * FROM products WHERE productCode IN (";
     
     foreach($_SESSION['cart'] as $id => $value) {
      $sql.="'".$id."',";
     }
     
     $sql=substr($sql, 0, -1).") ORDER BY productName ASC";
     $query=mysql_query($sql) or die(mysql_error());
     $totalprice=0;
     while($row=mysql_fetch_array($query)){
      $subtotal=$_SESSION['cart'][$row['productCode']]['quantity']*$row['buyPrice'];
      $totalprice+=$subtotal;
     ?>
      <tr class="registerform">
          <td><?php echo $row['productName'] ?></td>
          <td><input type="text" name="quantity[<?php echo $row['productCode'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['productCode']]['quantity'] ?>" /></td>
          <td>€<?php echo $row['buyPrice'] ?></td>
          <td>€<?php echo $_SESSION['cart'][$row['productCode']]['quantity']*$row['buyPrice'] ?></td>
       <td><button class="btn btn-login" type="submit" name="delete"><i class="fa fa-trash-o"></button></td>
      </tr>
     <?php
      
     }
  ?>
     <tr>
         <td colspan="5"><h4>Total price: <i>€<?php echo $totalprice ?></i></h4></td>
     </tr>
  
 </table>
 <br />
 <a href="thecollection.php?productline=all&scale=all&minimum=10&maximum=110&sortby=Name (A...Z)" class="btn btn-login">Continue shopping</a>
 <button class="btn btn-login" type="submit" name="submit">Update cart</button>
 <button class="btn btn-login" type="submit" name="submit">Checkout</button>

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

1 ответ

Если у каждого товара есть своя кнопка удаления, как узнать, какая кнопка нажата?

Чтобы удалить товары из вашей корзины, вам нужно указать, какой товар выбран.

Вы можете заменить кнопку удаления ссылкой:

<a href="/store/cart.php?act=delete&productid=$productid">delete</a>

Или же

добавьте скрытое значение в вашей форме:

<input type=hidden name=product_to_delete value=0>  
...
<input type=button name=deletebtn   onclick="javascript:document.cart_form.product_to_delete.value=$productid; document.cart_form.submit()"; >

Или же

Вы можете добавить флажок для каждого продукта и одну кнопку "Удалить" для всего списка, когда вы нажимаете кнопку Удалить, ваш php должен удалить каждый выбранный идентификатор продукта.

Другие вопросы по тегам