#php #mysql #database #cart #product-quantity
#php #mysql #База данных #Корзина #количество товара
Вопрос:
Я создаю функциональность корзины в своем проекте. Все работает отлично, но я сталкиваюсь с ошибкой при обновлении доступного количества продукта каждого заказанного продукта по идентификатору продукта. Я получаю идентификатор, но я могу понять, как получить доступное количество продукта из баз данных каждого продукта.
Мой код
$pid = array();
foreach ($_POST['product_id'] as $proid => $pidvalue) {
$pid[] .= $pidvalue;
}
$product_id = implode(', ', $pid);
// ==========================================
$pquantity = array();
foreach ($_POST['product_quantity'] as $pq => $pqvalue) {
$pquantity[] .= $pqvalue;
}
$product_quantity = implode(', ', $pquantity);
// ==========================================
// I am using static value
// How can I get the dynamic value
// Trying to Run Update Query
for ($i = 0; $i < (count($_SESSION['shopping_cart'])); $i ) {
$quantity_after_order[] = 15 - ($pquantity[$i]);
$update = array();
foreach ($_POST['product_id'] as $up => $upvalue) {
$update[] .= "UPDATE product SET pquantity = '$quantity_after_order[$i]' WHERE pid={$upvalue} " . "
<br>";
}
}
"<br>" . print_r($update) . "<br>";
Вывод:
Array ( [0] => UPDATE product SET pquantity = '4' WHERE pid=7
[1] => UPDATE product SET pquantity = '4' WHERE pid=32
[2] => UPDATE product SET pquantity = '4' WHERE pid=20
[3] => UPDATE product SET pquantity = '4' WHERE pid=31
)
Комментарии:
1. Здравствуйте. Пожалуйста, уточните свой вопрос. Или вы просто спрашиваете, как подключиться к БД и получить количество для конкретного продукта (
SELECT pquantity FROM product WHERE pid=...
)?2. Я выбираю количество из базы данных, но приходит только последнее значение. Я хочу выбрать количество в соответствии с pid. Продукт каждого количества, которое пользователь заказывает, обновляется после успешного выполнения заказа.
3. Я не вижу этого в коде (только
UPDATE ...
есть), но убедитесь, что вы выполняете только одну команду SQL за раз. Т.е. НетSELECT ...; SELECT ...;
, но толькоSELECT...
.4. теперь моя проблема решена, спасибо за вашу помощь. Я запускаю цикл while в цикле for, который выбирает pquantity из базы данных и выдает запрос на обновление после вычитания из количества заказа