2015-04-15 3 views
0

Я создал очень простую корзину покупок, которая просто добавляет элемент к ней и удаляет элементы из нее и пустую корзину теперь. Я знаю, что у меня много проблем в моем коде, но я пытаюсь исправить их, а такжеPHP удалить товар из корзины

первыми увидеть моего код

if (isset($_SESSION['cart'])) { 
    foreach ($_SESSION['cart'] as $c) { 
     echo $c['name'] . '<br />'; 
     echo $c['price'] . '<br />'; 
     echo '<a href="?pid=17&rc=' . $c['code'] . '">Remove item</a><br />'; 
    } 
} 


if (isset($_POST['buy'])) { 
    //header("Location:?pid=18&pl=" . $pl); 
    if (isset($_POST['buy'])) { 
     $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
     $getData->bind_param('i', $pl); 
     if ($getData->execute()) { 
      $res = $getData->get_result(); 
      if (($pn = $res->fetch_object()) !== null) { 
       $proCode = rand(1, 100); 

       $item['name'] = $pn->plan_name; 
       $item['price'] = $pn->price_dollar; 
       $item['code'] = $proCode; 
       $_SESSION['cart'][] = $item; 
      } 
     } 
    } 
} 

echo '<a href="?pid=17&ac=empty">Empty Cart</a>'; 

if (isset($_GET['rc']) && isset($_SESSION['cart'])) { 
    $rem = $_GET['rc']; 
    $ses = $_SESSION['cart']; 

    foreach ($_SESSION['cart'] as $cartItem) { 
     if ($cartItem["code"] == $rem) { 
      unset($ses[$rem]); 
     } 
    } 

    /*if (($key = array_search($rem, $ses)) !== false) { 
     unset($ses[$key]); 
    }*/ 
    var_dump($ses); 
} 

if (isset($_GET['ac']) == 'empty' && isset($_SESSION['cart'])) { 
    unset($_SESSION['cart']); 
} 

сейчас добавление новых продуктов работают хорошо со мной, но проблема приходит, когда я пытаюсь удалить один элемент из каретки он вернуться назад и что, похоже, произошло, и предмет все еще присутствует в корзине

+0

Трудно ответить этот вопрос, не видя, как ваша корзина работает в целом. Это может быть несколько разных проблем, но, не видя, как этот сценарий вызывается, трудно определить, что может быть неправильным. Мое подозрение заключается в том, что при удалении вы удаляете элемент из $ ses, но не $ _SESSION, поэтому, когда ваша корзина перезагружается, элемент все еще находится в сеансе. Не могу быть уверенным, хотя не видя весь модуль. – xJoshWalker

ответ

0

попробовать изменить УДАЛЕНИЕ цикл это:

foreach ($_SESSION['cart'] as $key=>$cartItem) { 
     if ($cartItem["code"] == $rem) { 
      unset($_SESSION['cart'][$key]); 
     } 
1

вы $ses снятия с охраны переменная не $_SESSION ...

Пожалуйста, обратите внимание на обновленный код, вы даже не нужно использовать forloop, вы можете просто unset переменной, как я сделал ниже

if (isset($_GET['rc']) && isset($_SESSION['cart'])) 
{ 
    $rem = $_GET['rc'];  
    if(isset($_SESSION['cart'][$rem])) 
    { 
     unset($_SESSION['cart'][$rem]); 
    } 
} 

дайте мне знать, если это поможет вам

EDIT

обновите функцию продукта купить Бель вл один .. вы используете auto increament key for array .. он должен быть первичный ключ (здесь ваш код продукта)

if (isset($_POST['buy'])) { 
    //header("Location:?pid=18&pl=" . $pl); 
    if (isset($_POST['buy'])) { 
     $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
     $getData->bind_param('i', $pl); 
     if ($getData->execute()) { 
      $res = $getData->get_result(); 
      if (($pn = $res->fetch_object()) !== null) { 
       $proCode = rand(1, 100); 

       $item['name'] = $pn->plan_name; 
       $item['price'] = $pn->price_dollar; 
       $item['code'] = $proCode; 
       $_SESSION['cart'][$proCode] = $item; 
      } 
     } 
    } 
} 
+0

Извините, что те же результаты отмечают удаление, и элемент все еще там, кстати, 'ses' равнялся' $ _SESSION ['cart'] ' – Mikky

+0

@Mikky, пожалуйста, проверьте изменения ... –

Смежные вопросы