Intereting Posts
facebook php sdk не работает. Зачем? Преобразовать хорошо известный текст (WKT) из MySQL в полигоны Google Maps с помощью PHP Прокрутите каждый ключ и значение многомерного массива php Отладка PHP с точками прерывания – примеры из практики, примеры ..? Именованные аргументы в PHP Закрытие PHP: не удается записать файлы? Пользовательские заголовки PHP cURL Отображение изображения php без загрузки по почте Как я могу перенаправить ошибку 404 на пользовательскую страницу 404 с помощью Codeigniter? PHP Получить строку после определенного соответствия шаблону регулярного выражения php – Неопределенная переменная: stmt in Как отступить к совершенно другой странице индекса, если пользователь отключил javascript? Как узнать количество загруженных файлов с помощью PHP? Является ли $ view в MVP-программе MVC правильным использованием глобальных переменных? Отображение базы данных S3DB в PHP

Инкрементная переменная для каждого набора опций в корзине покупок

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

$optionsSelected = array(); if (!empty($_POST['productOption'])) { foreach ($_POST['productOption'] as $options) $optionsSelected[] = $options; } $_SESSION['options'.$productID] = $optionsSelected; $key = $productID . ":" . base64_encode(serialize($optionsSelected)); $_SESSION['cart'][$key]++; header('location: /shop/cart'); 

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

Теперь, когда у меня все работает, я столкнулся с другой проблемой. И мое решение заключалось в создании переменной, которая увеличивается после каждого набора параметров для определенного идентификатора продукта.

См. В моей таблице базы данных есть столбец identifier . Все эти параметры вводятся в таблицу базы данных. И идентификатор должен соответствовать параметрам, установленным для идентификатора продукта.

Например, допустим, у меня есть следующая схема корзины покупок:

 Product Name Option Names Qty 33.8 Oz Jar Runts, Bears 1 33.8 Oz Jar Swirls, Twists 1 

Теперь это будет вставлено в мою таблицу базы данных так:

 orderNumber optionName productID identifier randomNumb Runts 33.8 Oz Jar randomNumb Bears 33.8 Oz Jar randomNumb Swirls 33.8 Oz Jar randomNumb Twists 33.8 Oz Jar 

Вы заметите, что поле идентификатора пуст, Это то, что я пытаюсь добавить … Мне нужно следующее, чтобы соответствовать банкам, содержимое которых должно быть в пределах:

 orderNumber optionName productID identifier randomNumb Runts 33.8 Oz Jar 1 randomNumb Bears 33.8 Oz Jar 1 randomNumb Swirls 33.8 Oz Jar 2 randomNumb Twists 33.8 Oz Jar 2 

Я придумал следующий код: (обратите внимание на переменную $ identifier)

 foreach($_SESSION['cart'] as $key => $quantity) { $product = explode(':', $key); $productId = $product[0]; $optionsSelected = unserialize(base64_decode($product[1])); $id = $productId; $statement = "INSERT INTO KC_OrderProducts (orderNumber, productID, qty) VALUES (:orderNumber, :productID, :qty);"; $query = $db->prepare($statement); $results = $query->execute(array( ":orderNumber" => $orderNumber, ":productID" => $id, ":qty" => $quantity )); $identifier = 0; if($optionsSelected > 0){ foreach($optionsSelected as $option) { $identifier++; $statement = "INSERT INTO KC_OrderOptions (orderNumber, optionName, productID, identifier) VALUES (:orderNumber, :optionName, :productID, :identifier)"; $query = $db->prepare($statement); $results = $query->execute(array( ":orderNumber" => $orderNumber, ":optionName" => $option, ":productID" => $id, ":identifier" => $identifier )); } } } 

Этот код заставил меня закрыть, моя таблица привела к следующему:

 orderNumber optionName productID identifier randomNumb Runts 33.8 Oz Jar 2 randomNumb Bears 33.8 Oz Jar 1 randomNumb Swirls 33.8 Oz Jar 2 randomNumb Twists 33.8 Oz Jar 1 

Как вы можете видеть, параметры больше не соответствуют продуктам. Это означает, что каждый заказ будет выполнен неправильно, просто потому, что заказ был перепутан.

Я попытался поместить $identifier = 0; вне блока foreach но это привело к тому, что каждая строка в таблице получила новый идентификационный номер. 1,2,3,4 а не 1,1,2,2

Итак, мой вопрос: что мне нужно делать с $identifier = 0; и $identifier++ для достижения того, что я пытаюсь сделать. Или есть лучший способ справиться с этим?

ОБНОВИТЬ

Параметр $ optionsSelected varialble, когда var_dump() возвращает следующий массив при var_dump() .

 array(2) { [0]=> string(5) "Runts" [1]=> string(5) "Bears" } array(2) { [0]=> string(6) "Swirls" [1]=> string(6) "Twists" }