PHP购物车:如何使用会话变量更新购物车中的产品数量?

时间:2014-01-30 10:29:36

标签: php session-variables shopping-cart

我正在创建我的第一个购物车项目。但在更新产品数量时卡住了。

我想使用会话变量更新产品数量。任何人都可以帮我解决这个问题并告诉我该怎么做吗?

这是my_cart.php页面代码

    <tr>
        <th class="tablerow">Product Code</th>
        <th class="tablerow">Product Name</th>
        <th class="tablerow">Image</th>
        <th class="tablerow">Quantity</th>
        <th class="tablerow">Price</th>
        <th class="tablerow">Total Price</th>
        <th class="tablerow">Action</th>                 
    </tr>

    <?php
    $grand_total = 0;                                   // For Calculating Grand Price
    foreach($_SESSION['cart'] as $id=>$quantity)
    {
        $sql="SELECT * FROM products WHERE id='$id'";
        $result=mysql_query($sql) or die("Error Message");
        while($row=mysql_fetch_array($result))
        {       
        $grand_total+= $row['product_price']*$quantity; // For Calculating Grand Price  
    ?>        

    <tr>                
        <td class="tablerow"><?php echo $row['id']; ?></td>
        <td class="tablerow"><?php echo $row['product_name']; ?></td>
        <td class="tablerow"><?php echo "<img height='50' width='50' src='admin/".$row['product_image']."'/>" ?></td>

        <form name="update_cart" action="update_cart.php" method="post">

        <td class="tablerow"><input type="text" name="quantity" value="<?php echo $quantity; ?>" /><br /><input type="image" src="admin/images/updatecart.png" name="Update" value="Update" /></td>

        </form>

        <td class="tablerow"><?php echo $row['product_price']; ?></td>
        <td class="tablerow"><?php echo $quantity*$row['product_price']; ?> </td>
        <td class="tablerow"><?php print "<a href='delete_cart.php?pid=".$row['id']."'><img src='admin/images/delete.png'></a>"; ?></td></form>
    </tr>

    <?php 
        }
    }
    ?>

    <tr>
        <td class="tablerow" colspan="7">Grand Total: Rs <?php echo $grand_total; ?></td>
    </tr>       

    <tr>
        <td class="tablerow" colspan="7"><?php print "<a href='clear_cart.php'><img src='admin/images/clearcart.png'></a><a href='http://localhost/Shopping-Cart/front-end/'><img src='admin/images/continueshopping.png'></a><a href='update_cart.php'><img src='admin/images/placeorder.png'></a>";?></td>
    </tr>              

    </table>

2 个答案:

答案 0 :(得分:0)

  

我想使用会话变量

更新产品数量

有一个问题:您希望在客户端或仅在服务器上更新qnt(您的会话vars存储在服务器上)? 我可以假设你希望你的客户在他的浏览器(客户端)上更改qnt,服务器应该知道吗? 如果是这样,您需要在客户端上使用JS + Ajax请求(Jquery更简单的方式)将ajax请求发送到文件(例如:change_qnt.php),如果成功将在客户端(浏览器)上更新qnt

change_qnt.php将更改存储qnt的会话变量,如果成功与否则返回结果,具体取决于您在访问者页面上更新或不更新。

很简单的例子:

<script>
$('selector_that_will_change_qnt').click() {
.ajax ({
url: 'change_qnt.php',
type: 'post',
dataType: 'html',
success: function() { // code here if success request},
error: function(){ //code here if request was failed}
});
}
</script>

答案 1 :(得分:0)

将所有产品ID 保存在会话数组中。索引应该等于与产品ID相同。这意味着,如果用户点击或添加新产品,则将1保存在阵列中的$_SESSION['cart']['product_id']位置。如果用户再次添加相同的产品,则只需执行$_SESSION['cart']['product_id']++,然后您就可以使用foreach($_SESSION['cart'] as $id=>$quantity)打印数组。您可以轻松编写上述概念。

如果你能从中理解任何东西,这是一个例子。

if(isset(isset($_REQUEST['pid']) && !empty($_REQUEST['pid'])) {
    $_SESSION['item'] = $_SESSION['item'] + 1; //Total number of items in cart
    $p_id = $_REQUEST['pid']; //Clicked product's id
    $_SESSION['cart'][$p_id]++; //Increment in relevant index value by one
    $cost_query = "select * from product where id=$p_id";
    //Calculate cost here and store it in session variable to use in your main page or where you are displaying your cart
}