我正在创建我的第一个购物车项目。但在更新产品数量时卡住了。
我想使用会话变量更新产品数量。任何人都可以帮我解决这个问题并告诉我该怎么做吗?
这是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>
答案 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
}