How to create a Shopping Cart in PHP
How to create a Shopping Cart in PHP
File Structure for Shopping Cart
index.php : This file will contain all coding part
config.php: This file is used for database connection
style.css: This is a CSS file used for designing purpose
product-images folder: Used to store the product images
Step1:
Create a database then create a table inside that database tblproducts and insert some data into this table.
tblproducts table structure
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
-- -- Table structure for table `tblproduct` -- CREATE TABLE `tblproduct` ( `id` int(8) NOT NULL, `name` varchar(255) NOT NULL, `code` varchar(255) NOT NULL, `image` text NOT NULL, `price` double(10,2) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tblproduct` -- INSERT INTO `tblproduct` (`id`, `name`, `code`, `image`, `price`) VALUES (1, 'MSI GF63 Thin Core i7 9th Gen', 'MSI4353', 'product-images/msi-laptop.jpeg', 1500.00), (2, 'WD 1.5 TB Wired External Hard Disk Drive (Black)', 'WD091', 'product-images/external-hardidisk.jpeg', 50.00), (3, 'VERTIGO Running Shoes For Men (Black)', 'LOTTO215', 'product-images/lotto-shoes.jpeg', 10.00); -- -- Indexes for dumped tables -- -- -- Indexes for table `tblproduct` -- ALTER TABLE `tblproduct` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `product_code` (`code`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tblproduct` -- ALTER TABLE `tblproduct` MODIFY `id` int(8) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
Stepr 2 :
Fetch the inserted products
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<div id="product-grid"> <div class="txt-heading">Products</div> <?php $product= mysqli_query($con,"SELECT * FROM tblproduct ORDER BY id ASC"); if (!empty($product)) { while ($row=mysqli_fetch_array($product)) { ?> <div class="product-item"> <form method="post" action="index.php?action=add&pid=<?php echo $row["id"]; ?>"> <div class="product-image"><img src="<?php echo $row["image"]; ?>"></div> <div class="product-tile-footer"> <div class="product-title"><?php echo $row["name"]; ?></div> <div class="product-price"><?php echo "$".$row["price"]; ?></div> <div class="cart-action"><input type="text" class="product-quantity" name="quantity" value="1" size="2" /><input type="submit" value="Add to Cart" class="btnAddAction" /></div> </div> </form> </div> <?php } } else { echo "No Records."; } ?> </div> |
Step 3 :
Adding products into the shooping cart.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//code for adding product in cart case "add": if(!empty($_POST["quantity"])) { $pid=$_GET["pid"]; $result=mysqli_query($con,"SELECT * FROM tblproduct WHERE id='$pid'"); while($productByCode=mysqli_fetch_array($result)){ $itemArray = array($productByCode["code"]=>array('name'=>$productByCode["name"], 'code'=>$productByCode["code"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode["price"], 'image'=>$productByCode["image"])); if(!empty($_SESSION["cart_item"])) { // searches for specific value code if(in_array($productByCode[0]["code"],array_keys($_SESSION["cart_item"]))) { foreach($_SESSION["cart_item"] as $k => $v) { if($productByCode[0]["code"] == $k) { if(empty($_SESSION["cart_item"][$k]["quantity"])) { $_SESSION["cart_item"][$k]["quantity"] = 0; } $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"]; } } } else { //The array_merge() function merges one or more arrays into one array. $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray); } } else { $_SESSION["cart_item"] = $itemArray; } } } break; |
The above code used for adding prodcuts in to cart. In this case “add” hanlde the add cart action. All cart values will be store in cart session.
Step 4 :
Retrive cart products from cart session
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
<!-- Cart ----> <div id="shopping-cart"> <div class="txt-heading">Shopping Cart</div> <a id="btnEmpty" href="index.php?action=empty">Empty Cart</a> <?php if(isset($_SESSION["cart_item"])){ $total_quantity = 0; $total_price = 0; ?> <table class="tbl-cart" cellpadding="10" cellspacing="1"> <tbody> <tr> <th style="text-align:left;">Name</th> <th style="text-align:left;">Code</th> <th style="text-align:right;" width="5%">Quantity</th> <th style="text-align:right;" width="10%">Unit Price</th> <th style="text-align:right;" width="10%">Price</th> <th style="text-align:center;" width="5%">Remove</th> </tr> <?php foreach ($_SESSION["cart_item"] as $item){ $item_price = $item["quantity"]*$item["price"]; ?> <tr> <td><img src="<?php echo $item["image"]; ?>" class="cart-item-image" /><?php echo $item["name"]; ?></td> <td><?php echo $item["code"]; ?></td> <td style="text-align:right;"><?php echo $item["quantity"]; ?></td> <td style="text-align:right;"><?php echo "$ ".$item["price"]; ?></td> <td style="text-align:right;"><?php echo "$ ". number_format($item_price,2); ?></td> <td style="text-align:center;"><a href="index.php?action=remove&code=<?php echo $item["code"]; ?>" class="btnRemoveAction"><img src="icon-delete.png" alt="Remove Item" /></a></td> </tr> <?php $total_quantity += $item["quantity"]; $total_price += ($item["price"]*$item["quantity"]); } ?> <tr> <td colspan="2" align="right">Total:</td> <td align="right"><?php echo $total_quantity; ?></td> <td align="right" colspan="2"><strong><?php echo "$ ".number_format($total_price, 2); ?></strong></td> <td></td> </tr> </tbody> </table> <?php } else { ?> <div class="no-records">Your Cart is Empty</div> <?php } ?> </div> |
Step 5 :
Removing the products from cart
1 2 3 4 5 6 7 8 9 10 11 |
// code for removing product from cart case "remove": if(!empty($_SESSION["cart_item"])) { foreach($_SESSION["cart_item"] as $k => $v) { if($_GET["code"] == $k) unset($_SESSION["cart_item"][$k]); if(empty($_SESSION["cart_item"])) unset($_SESSION["cart_item"]); } } break; |
We use unset() to deleteing product from cart.
Step 6 :
In this step empty the cart in one click.
1 2 3 4 |
// code for if cart is empty case "empty": unset($_SESSION["cart_item"]); break; |