2012-02-22 4 views
0

Банкомат, я тестирую свою тележку. Когда я загрузить новую страницу с продуктами, чтобы добавить в корзину, они добавляют добавить хорошо, но я также получаю ошибку, например:PHP добавлено в корзину

Notice: Undefined индекс: cart_25 в

25 IS индекс, который связан с продукт.

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 [ «добавить»] к междунар, когда вы собираетесь объединить ее (в виде строки) в «cart_» –

ответ

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}, почему разве вы просто не делаете массив несколькими измерениями? Тогда ваш цикл foreach будет намного проще. Вы также можете иметь функции или методы для добавления и удаления элементов, чтобы каждый раз вам не приходилось выполнять одни и те же тесты.

function add_to_cart($index, $amount) { 
    if (!isset($_SESSION['cart'][$index])) { 
     $_SESSION['cart'][$index] = 0; 
    } 
    $_SESSION['cart'][$index] += $amount; 
} 
Смежные вопросы