Если у вас есть две таблицы, одна для пользователей и одна для элементов, вы можете сделать что-то вроде следующего.
Управляйте текущими элементами корзины, добавляя и удаляя item_id в сериализованный массив, который вы можете хранить в своей таблице пользователей И в сеансе одновременно, сохраняя их синхронизацию. Например, если пользователь впервые посещает ваш магазин (не авторизованный и с пустой корзиной покупок), вы можете создать сеанс следующим образом.
session_start();
Начинаем сеанс.
if (isset($_SESSION['current_basket']) {
$current_basket = unserialize($_SESSION['current_basket']);
} else {
$current_basket = array();
}
Поскольку это первый раз, когда наш посетитель посещает нашу страницу, переменная сеанса current_basket не будет установлена, что означает, что приведенный выше оператор if не будет выполняться, а вместо этого просто создаст пустой Массив PHP в переменной с именем current_basket.
Теперь, когда посетитель добавляет товар в корзину, нам просто нужен идентификатор товара в вашей базе данных и добавление его в массив current_basket.
$current_basket[] = $item_id;
Затем мы немедленно обновляем переменную сеанса новым массивом, сериализуя его в процессе.
$_SESSION['current_basket'] = serialize($current_basket);
Теперь у вас есть правильный, пригодный для использования массив со всеми идентификаторами продуктов для корзины покупок этого человека.
Теперь давайте представим, что пользователь вошел в систему. Мы проверим это и добавим только еще один шаг.
$sql = "UPDATE users SET current_basket=" . serialize($current_basket) . " WHERE id=$user_id"
// Execute that query.
Там теперь тот же самый массив находится в базе данных, которую вы затем можете извлечь и установить в качестве переменной сеанса, когда пользователь входит в систему.
Вы можете выполнять эту последовательность шагов каждый раз, когда продукт добавляется или удаляется, поддерживая его обновление как в сеансе, так и в базе данных.
Очевидно, что это очень размытая концепция ради объяснения. Очевидно, вам нужно лучше управлять массивом. Например, не добавлять товар в корзину, если он там уже есть, удалять элементы из массива... и т.д.
Ключ в том, чтобы сериализовать массив и всегда хранить в сеансе и в таблице пользователей, если пользователь вошел в систему.
Затем, когда пользователь возвращается и входит в систему, вы можете установить для него массив в сеансе, используя массив в базе данных, когда они в последний раз были на вашем сайте.
person
Sajan Parikh
schedule
25.01.2013