2016-10-26 3 views
0

Продукты в моей корзине хранятся в ajax и устанавливаются в сеансы. Посмотрите мой код от cart_functions.php (вот функции для моих кнопок в корзине).Снятие переменных сеанса из цикла foreach PHP

if (isset($_GET['action'])) { 
    $action = $_GET['action']; //get button action name 
    $prod = $_GET['prod_id']; // id of the product 
    $prodname = 'product_'.$prod;// name of the product 



switch ($action) { 
    case 'add': 
     $result = add_prod($prod, $prodname); 
    break; 
    ///rest of switch....(not important for now) 

Это функция, которая добавляет продукт в сессии

function add_prod($prod, $prodname){ 
    //add function 
$_SESSION[$prodname] = 1; 
return ['result'=>'success']; 
} 

название этой сессии, как это ->$_SESSION['product_123'] и т.д.

Ok так что теперь я хочу, чтобы сбросить все $_SESSION[$prodname]. На других страницах $_SESSION[$prodname] есть $_SESSION['product_123']. Так как в моей корзине у меня есть несколько $_SESSION[$prodname] Я хочу, чтобы отменить, когда клиент отправит заказ. Как я могу получить все $_SESSION['product_123'],$_SESSION['product_1234']...and so on?

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

$product_count = count(array_filter(array_keys($_SESSION), function($x) { 
      return substr($x, 0, 8) == 'product_'; 
      })); 

ответ

1

Вы бы лучше использовать массив

$_SESSION['products'][$id]

Это позволит вам легко перебрать ваши продукты и вы можете сбросить его просто

unset($_SESSION['products'])

+0

создание сеанса как '$ _SESSION ['products'] [$ id]' намного лучше, мне пришлось переписать весь мой код, чтобы сделать '$ _SESSION ['name here'] [id здесь] ' –

1

попробовать session_destroy() создать новый файл что-то вроде reset.php и вы помещаете session_destroy() это стереть все сессии определенно

+0

Я хочу, чтобы сбросить только мой products_ $ id, а не все сеансы mate –

2

в точке, в которой вы надеетесь дезактивировать конкретный сеанс элемент, вы пробовали

unset($_SESSION[$product]); 

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

+0

omg забыли об этом, я обновлю свой код –

+0

обновлен. посмотрите ссылку postOrder.php –

+0

получил это - скажите, новый заказ вставлен успешно? – WEBjuju

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