2016-03-31 6 views
-1

Я новичок в кодировании и пытаюсь обновить количество в моей корзине, но оно принимается только для одного продукта.php mysql корзина ошибка обновления количества

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

Мне нужна помощь, разделяющая количества.

Вот мой код:

<form action="" method="post" enctype="multipart/form-data"> 
      <table align="center" width="700" > 
       <tr align="center"> 
        <td colspan="5"><h2>SHOPPING CART</h2></td> 
       </tr> 
       <tr align="center"> 
        <th>Remove</th> 
        <th>Product (s)</th> 
        <th>Quantity</th> 
        <th> Price</th> 
        <th> Total Price</th> 
       </tr> 

       <?php 

       global $con; 
     $total = 0; 
     $ip = getIp(); 


     $sel_price = "select * from cart where ip_add='$ip'"; 

     $run_price = mysqli_query($con,$sel_price); 

     while($p_price = mysqli_fetch_array($run_price)){ 

      $pro_id = $p_price['p_id']; 

      $pro_price = "select * from products where product_id = '$pro_id'"; 

      $run_pro_price = mysqli_query($con, $pro_price); 

      while($pp_price = mysqli_fetch_array($run_pro_price)){ 
       $product_price = array($pp_price['product_price']); 

       $product_id = $pp_price['product_id']; 
       $product_title = $pp_price['product_title']; 
       $product_image = $pp_price['product_image']; 

       $single_price = $pp_price['product_price']; 

       $values = array_sum($product_price); 

       $total += $values; 

       ?> 
      <tr align = "center"> 
       <td><input type="checkbox" name="remove[]" value=" <?php global $con; echo $pro_id; ?>"/></td> 
       <td><span style="color: white;"><?php echo $product_title; ?></span> 
       <br> 
       <img src="admin_area/product_images/<?php echo $product_image; ?>" width="100px" height="100px"></td> 
       <td><input type="number" size="4" name="qty" /></td> 
       <?php 
       global $con; 
       global $Stotal; 
       $Stotal = $single_price; 

       if(isset($_POST['update_quantity'])){ 

        $qty = $_POST['qty']; 
        $update_qty = "update cart set qty='$qty' "; 
        $run_qty = mysqli_query($con, $update_qty); 


        $Stotal = $single_price * $qty; 

        } 




       ?> 
       <td><?php echo "KSh. " . $single_price; ?></td> 
        <td><?php echo "KSh. " . $Stotal; ?></td> 
      </tr> 

     <?php }} ?> 
     <tr align="right"> 
       <td colspan="5"><b>Total:</b> <?php echo "KSh. " . $total; ?></td>  
     </tr> 


     <tr align="center"> 
      <td><input type="submit" name="update_cart" value="Update Cart" /></td> 
      <td><input type="submit" name="continue" value="Continue Shopping" /></td> 
      <td><input type="submit" name="update_quantity" value="Update Quantity" /></td> 
      <td><button><a href="checkout.php" style="text-decoration: none; color: black;"> Checkout </a></button></td> 
     </tr> 
      </table> 
     </form> 
    <?php 

     global $con; 
     $ip = getIp(); 

     if(isset($_POST['update_cart'])){ 

      foreach($_POST['remove'] as $remove_id){ 

      $delete_pro = "delete from cart where p_id = '$remove_id' and ip_add='$ip'"; 

      $run_delete = mysqli_query($con, $delete_pro); 

      if($run_delete){ 
       echo "<script>window.open('cart.php','_self')</script>"; 

      } 
      } 

     } 

     if(isset($_POST['continue'])){ 

     echo "<script>window.open('index.php','_self')</script>"; 

     } 


    ?> 
+0

** ПРЕДУПРЕЖДЕНИЕ ** При использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/ manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк или конкатенацию, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). ** НИКОГДА ** не вводите данные '$ _POST' непосредственно в запрос. – tadman

+0

Какой продукт вы называете? Каково содержание «корзины»? '' '$ update_qty =" update cart set qty = '$ qty' ";' '' Разве вы не хотите называть его на продукт, который находится внутри 'cart'? – paskl

+0

стол для корзины имеет столбец «p_id», который получает product_id из таблицы продуктов, во-вторых, «ip_add», который получает ip-адрес, и, наконец, «qty», то есть количество –

ответ

-1

Похоже, что вы назвали элементы управления HTML формы как 'PHP массивы'. <input name="remove[]">

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

Кстати, я рекомендую использовать $_SESSION для обработки корзины

+0

, не совсем знакомое с сеансами, позвольте мне попробовать, любой совет –

Смежные вопросы