2012-02-22 151 views
0

自动取款机,我正在测试我的购物车。当我打开与产品的新页面添加到购物车,他们补充加罚款,但我也得到例如一个错误:PHP加入购物车

注意:未定义指数:cart_25在

25是与相关指数该产品。

if (isset($_GET['add'])) { 
    $_SESSION['cart_'.(int)$_GET['add']]+=1; 
    } 


    foreach($_SESSION as $name => $value) { 
    if ($value>0){ 
    if (substr($name,0,5)=='cart_') { 
     $name = substr($name, 5, (strlen($name)-5)); 
     echo $name.'<br />'; 
    } 

任何提示,以帮助将是巨大的

+0

作为答案下面显示的一个,没有必要投下$ _GET [“添加”]为int,你什么时候来连接它(作为一个字符串),以“cart_” – 2012-02-22 18:01:03

回答

3

试试这样说:

$key = 'cart_' . $_GET['add']; 
$_SESSION[$key] = isset($_SESSION[$key]) ? $_SESSION[$key] + 1 : 1; 
0

$_SESSION['cart_'.(int)$_GET['add']]+=1;确实$_SESSION['cart_'.(int)$_GET['add']] = **$_SESSION['cart_'.(int)$_GET['add']]** + 1; 所以第一次是不确定的,所以

if (!isset($_SESSION['cart_'.(int)$_GET['add']])) { 
    $_SESSION['cart_'.(int)$_GET['add'] = 1; 
} else { 
    $_SESSION['cart_'.(int)$_GET['add']]+=1; 
} 
1

为什么不使用cart_{index}难道你只是让阵列有多个维度?那么你的循环会更简单很多。您可能还想要添加和删除项目的功能或方法,因此您不必每次都进行相同的测试。

function add_to_cart($index, $amount) { 
    if (!isset($_SESSION['cart'][$index])) { 
     $_SESSION['cart'][$index] = 0; 
    } 
    $_SESSION['cart'][$index] += $amount; 
}