无法删除和更新购物车中的商品会话有问题

时间:2013-02-11 17:51:55

标签: php session shopping-cart

我有购物车,当我将物品添加到购物车中,当我想更改数量或删除任何物品时,它会给我空车。以下是购物车的代码:

编辑:

<?php 
session_start();
require "C:/xampp/...../DButils.php";
require "C:/xampp/..../functions.php";
$msg = '';
if(isset($_REQUEST['command']) && isset($_REQUEST['pid'])>0)
 {
    remove_product($_REQUEST['pid']);
}
else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'clear'){
    unset($_SESSION['cart']);
}
else if(isset($_REQUEST['command']) && $_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';
        }
    }
}

 ?>

4 个答案:

答案 0 :(得分:0)

您没有正确使用isset()功能。这将返回布尔值true或false,而不是值的字符串。你可能打算做的是:

else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'clear'){

...和...

else if(isset($_REQUEST['command']) && $_REQUEST['command'] == 'update'){

如果没有这些更改,您将永远无法执行这些代码块,因为true / false永远不会等于“clear”或“update”。

答案 1 :(得分:0)

if(isset($_REQUEST['command']) && $_REQUEST['command']=='add' && $_REQUEST['productid']>0)
{
    remove_product($_REQUEST['pid']);
}

当您想要添加产品时,您似乎正在尝试删除该产品。

另外,正如@cillosis所提到的

else if(isset($_REQUEST['command'])=='update'){

总是会评估为假。这是因为isset()只返回一个BOOLEAN值(true,false,1,0)并且您正在评估条件:“如果'true / false'等于'update'”并且因为true和false都不相等对于字符串'update',测试每次都会失败。

如果您更新问题中的代码以删除指出的错误,则可以更轻松地回答您的问题。正如目前所写的那样,解读起来相当困难。

答案 2 :(得分:0)

试试这个

 if($_REQUEST['command']=='delete' && $_REQUEST['id']>0){
 remove_product($_REQUEST['id']);
 }
 else if($_REQUEST['command']=='clear'){
 unset($_SESSION['cart']);
 }
 else if($_REQUEST['command']=='update'){
 $max=count($_SESSION['cart']);
 for($i=0;$i<$max;$i++){
 $id=$_SESSION['cart'][$i]['id'];
 q=intval($_REQUEST['qty'.$id]);
 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';
 }
 }
 }

表单按钮应该是这样的

 <a href="javascript:del(<?php echo $id?>)">
 <input type="button" class="button5" value="Remove" /></a>

答案 3 :(得分:0)

据我所知,服务器语言(php)不明白给出的目录, 尝试拥有一个有效的目录 要求projectName/functions.php;希望它也会有所帮助。