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()){ }
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.