Hi,
wymyśliłem sobie sumowanie produktów z mojego koszyka, tylko, że mam pewien problem, bo albo za bardzo kombinuję albo źle zaprojektowałem kilka tabel. Może na początek przedstawie strukturę tabel:
Tabela z koszykiem:
CREATE TABLE `basket` (
`id_product_basket` int(11) NOT NULL,
`member_id` int(11) NOT NULL,
`product_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Do tej tabeli dołączam jeszcze:
CREATE TABLE `members` (
`id_user` int(11) NOT NULL,
`username` varchar(24) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `products` (
`id_product` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`product_name` text NOT NULL,
`product_price` decimal(10,2) NOT NULL,
`product_status` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `promo` (
`id_promo` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
`percent_promo` int(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Moje aktualne zapytanie:
$getDataInBasket2 = $db->prepare("SELECT a.id_product, a.product_price, b.percent_promo FROM `products` AS `a`
JOIN `promo` AS `b` ON a.id_product = b.product_id
JOIN `basket` AS `c` ON a.id_product = c.product_id
JOIN `members` AS `d`
WHERE `id_user` = :member_id
");
$getDataInBasket2->bindValue(":member_id", $_SESSION['id_user'], PDO::PARAM_INT);
if(!$getDataInBasket2->execute()){
print_r($getDataInBasket2->errorInfo());
}
trochę tego dużo ale już tłumaczę jak to ma działać. Chodzi o zsumowanie wszystkich produktów z koszyka z uwzgędnieniem promocji dlatego też łączę z tabelą promo
. W tabeli promo
jest procent promocji na podstawie, którego "w locie" obliczam ile wynosi aktualna cena, kodem:
$resultOfPromo = $basketContainer2['product_price'] / 100 * $basketContainer2['percent_promo'];
$newPrice = $basketContainer2['product_price'] - $resultOfPromo;
Na podstawie pobranej ceny normalnej oraz procentu promocji powinna się wyświetlić cena promocyjna.
Aktualne zaptanie, co prawda wyświeetla cenę produktu ale tylko pierwszego z koszyka. Nie sumuje.
Jeśli ktoś się w tym połapie oraz byłby w stanie mi pomóc jak zliczyć wszystkie produkty z koszyka z uqzględnieniem promocji to będę bardzo wdzięczny.
Pozdrawiam.