2012-02-22 141 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; 
}