如何用PHP更新购物车数量?

时间:2016-02-22 18:07:49

标签: php cart

以下是我的工作源代码?我想用相应的项目更新数量并计算总数。我被卡住或做错了编码。请有人能告诉我该做些什么吗?表示当用户增加该项目的数量价格时应该增加..

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

            $run_sel_user = mysqli_query($con,$sel_user);

            while($p_price = mysqli_fetch_array($run_sel_user))
            {
                $pro_id = $p_price['p_id'];

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

                $run_pro_from_product = mysqli_query($con,$sel_pro_from_product);

                while($pro_price = mysqli_fetch_array($run_pro_from_product))
                {

                    $product_price = array($pro_price['product_price']);

                    $product_title = $pro_price['product_title'];

                    $product_image = $pro_price['product_img1'];

                    $product_single_price = $pro_price['product_price'];

                    $values = array_sum($product_price);

                    $total += $values ;
                    if(isset($_POST['update_cart']))
                    {
                        if(isset($_POST['qty']))
                        {
                            print_r($_POST['qty']);
                            foreach($_POST['qty'] as $qty_add)
                            {

                                $qty = $qty_add;
                                $update_qty = "update cart set qty='$qty' where p_id='$pro_id'";
                                $run_qty = mysqli_query($con,$update_qty);
                                $total=$total*$qty;
                            }
                        }
                        else
                        {

                        }
                    }

            ?>
            <tr align="center" >
                <td style="padding:5px; border:1px solid black;"><input type="checkbox" name="remove[]" value="<?php echo $pro_id;?>"/></td>

                <td style="padding:5px; border:1px solid black;"><?php echo $product_title;?><br>
                    <img src="admin_area/product_images/<?php echo $product_image; ?>" height="60" width="60"/>
                </td>
                <td style="padding:5px; border:1px solid black;"><input type="text" size="4" name="qty[]" 
                    value="<?php
                            $default_qty = 1;
                            if(!isset($_POST['qty']))
                            {
                                echo $default_qty;
                            }


                    ?>" style="text-align:center;"/></td>


                        <td style="padding:5px; border:1px solid black;"><?php echo $product_single_price." Rs ";?></td>
                    </tr>
                    <?php   
                }}

                    ?>

1 个答案:

答案 0 :(得分:0)

您正在将输入框的名称设置为qty []数组,并且对于购物车中的每个项目和数组中的每个项目都进行循环。因此,如果购物车中有20个商品,则您当前正在发送20x20个查询,20个中的19个将包含错误的信息。相反,您可以使用$ pro_id变量设置输入框的名称。

<input type="text" size="4" name="qty<?php echo($pro_id);?>"/>

这样,每个文本框都有自己唯一的名称,该名称标识它是哪个产品。然后在上面的while循环中你可以做类似的事情

if(isset($_POST['update_cart']))
{
    if(isset($_POST['qty' . $pro_id]))
    {
        $quantity = (int)$_POST['qty' . $pro_id];
        $run_qty = mysqli_query($con,"update cart set qty='$qty' where p_id='$pro_id'");
    }
}

但是,当然,它现在的设置方式,无法知道购物车表中的哪些记录属于哪些用户。因此,如果没有更多更改(例如标识哪些记录属于哪个用户的字段)

,这在现实世界设置中将无效