gpt4 book ai didi

php - 如何用php创建在线购物车

转载 作者:行者123 更新时间:2023-11-29 13:57:41 26 4
gpt4 key购买 nike

我正在创建一个购物车,其中有四个按钮继续购物、清除购物车、更新购物车和下订单我在 session 中遇到问题,就像当我按下清除购物车按钮时它会显示

 undefined index cart 

但是购物车来自 session ,当我按下清除购物车按钮时

it unsets the session of cart 

那么我哪里做错了?有人可以帮忙吗?这是我的代码

<?php
include("includes/db.php");
include("includes/functions.php");

if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
remove_product($_REQUEST['pid']);
}
else if($_REQUEST['command']=='clear'){
unset($_SESSION['cart']);
}
else if($_REQUEST['command']=='update'){
$max=count($_SESSION['cart']);
for($i=0;$i<$max;$i++){
$pid=$_SESSION['cart'][$i]['productid'];
$q=intval($_REQUEST['product'.$pid]);
if($q>0 && $q<=999){
$_SESSION['cart'][$i]['qty']=$q;

}
else{
$msg='Some proudcts not updated!, quantity must be a number between 1 and 999';
}
}
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shopping Cart</title>
<script language="javascript">
function del(pid){
if(confirm('Do you really mean to delete this item')){
document.form1.pid.value=pid;
document.form1.command.value='delete';
document.form1.submit();
}
}
function clear_cart(){
if(confirm('This will empty your shopping cart, continue?')){
document.form1.command.value='clear';
document.form1.submit();
}
}
function update_cart(){
document.form1.command.value='update';
document.form1.submit();
}


</script>
</head>

<body>
<form name="form1" method="post">
<input type="hidden" name="pid" />
<input type="hidden" name="command" />
<div style="margin:0px auto; width:600px;" >
<div style="padding-bottom:10px">
<h1 align="center">Your Shopping Cart</h1>
<input type="button" value="Continue Shopping" onclick="window.location='products.php'" />
</div>
<div style="color:#F00"><?php echo'' ;?></div>
<table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
<?php
if(is_array($_SESSION['cart'])){
echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td><td>Options</td></tr>';
$max=count($_SESSION['cart']);
for($i=0;$i<$max;$i++){
$pid=$_SESSION['cart'][$i]['productid'];
$q=$_SESSION['cart'][$i]['qty'];
$pname=get_product_name($pid);
if($q==0) continue;
?>
<tr bgcolor="#FFFFFF"><td><?php echo $i+1?></td><td><?php echo $pname?></td>
<td>$ <?php echo get_price($pid)?></td>
<td><input type="text" name="product<?php echo $pid?>" value="<?php echo $q?>" maxlength="3" size="2" /></td>
<td>$ <?php echo get_price($pid)*$q?></td>
<td><a href="javascript:del(<?php echo $pid?>)">Remove</a></td></tr>
<?php
}
?>
<tr><td><b>Order Total: $<?php echo get_order_total()?></b></td><td colspan="5" align="right"><input type="button" value="Clear Cart" onclick="clear_cart()"><input type="button" value="Update Cart" onclick="update_cart()"><input type="button" value="Place Order" onclick="window.location='billing.php'"></td></tr>
<?php
}
else{
echo "<tr bgColor='#FFFFFF'><td>There are no items in your shopping cart!</td>";
}
?>
</table>
</div>
</form>
</body>
</html>

最佳答案

如果您尚未开始填充购物车,则该元素将是未定义的。处理数组元素时,最好添加额外的测试 array_key_exists()。然而,就您而言,问题更多在于您通常处理数组的方式。

PHP 非常宽容,因此您必须在编码方式上强制执行自己的规则。值得使用的一个非常好的实践是在开始使用变量之前显式初始化它们。

// somewhere near the top of your code
$_SESSION['cart'] = array_key_exists('cart', $_SESSION)?$_SESSION['cart']:array();

并且不要在清除测试中取消设置...只需将其设置回空数组即可。

else if($_REQUEST['command']=='clear'){
$_SESSION['cart'] = array();
}

关于php - 如何用php创建在线购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com