|
PHP สร้างระบบตะกร้าสั่งซื้อสินค้า Shopping Cart ด้วย Session และ Array (PHP กับ MySQL) |
|
|
PHP สร้างระบบตะกร้า Shopping Cart ด้วย Session และ Array สำหรับตัวอย่าง Script นี้เป็นการสร้างระบบตะกร้าสินค้า หรือ Shopping Cart แบบง่าย ๆ โดยหลักการก็คือดึงข้อมูลจาก MySQL มาแสดง และให้ผู้ใช้ได้ทำการเลือกสินค้า ลงในตะกร้า โดยใช้ระบบจัดเก็บแบบ PHP Array ผ่าน Session โดยลูกค้าสามารถทำการเลือกสินค้าอื่น ๆ ได้ตลอดเวลาที่อยู่ในหน้าจอบนเว็บ โดยในตัวอย่างเมื่อลูกค้าได้เลือกสินค้าซ้ำกับสินค้าที่ได้เลือกแล้วก็จะมีการบวกหนึ่งให้อัตโนมัติ และสามารถลบรายการที่ได้เลือกไว้แล้ว รวมทั้งหน้าจอสำหรับ Checkout การกรอก ข้อมูลชื่อและที่อยู่ในการจัดส่งสินค้า และสุดท้ายหลังจากทำการ Checkout แล้วก็จะแสดงข้อมูลที่ได้ถูกกจัดเก็บลงในฐานข้อมูล MySQL พร้อมกับหมายเลข OrderID เพื่ออ้างอิง
Screenshot
คุณสมบัติและความสามารถของตัวอย่างนี้
- แสดงรายละเอียดสินค้าจากฐานข้อมูล MySQL
- จัดเก็บข้อมูลการสั่งซื้อในรูปแบบ PHP และ Session
- หน้าจอสำหรับ Checkout
- หน้าจอแสดงรายละเอียดการสั่งซื้อ
ตารางประกอบด้วย 3 ตารางคือ
- product
- orders
- orders_detail
โครงสร้างตาราง product เก็บรายละเอียดสินค้า
โครงสร้างตาราง orders เก็บข้อมูลลูกค้าที่สั่งซื้อ และหมายเลข OrderID
โครงสร้างตาราง orders_detail เก็บรายละเอียดของแต่ล่ะ OrderID
ตารางของ MySQL
--
-- Table structure for table `orders`
--
CREATE TABLE `orders` (
`OrderID` int(5) unsigned zerofill NOT NULL auto_increment,
`OrderDate` datetime NOT NULL,
`Name` varchar(100) NOT NULL,
`Address` varchar(500) NOT NULL,
`Tel` varchar(100) NOT NULL,
`Email` varchar(100) NOT NULL,
PRIMARY KEY (`OrderID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Dumping data for table `orders`
--
INSERT INTO `orders` VALUES (00001, '2012-03-15 09:59:13', 'Weerachai Nukitram', '1234 Lapharo Bangkok Thailand', '0819876107', '[email protected]');
INSERT INTO `orders` VALUES (00002, '2012-03-15 10:15:03', 'Weerachai Nukitram', '1234 Latpharo Bangkok Thailand', '0819876107', '[email protected]');
-- --------------------------------------------------------
--
-- Table structure for table `orders_detail`
--
CREATE TABLE `orders_detail` (
`DetailID` int(5) NOT NULL auto_increment,
`OrderID` int(5) unsigned zerofill NOT NULL,
`ProductID` int(4) NOT NULL,
`Qty` int(3) NOT NULL,
PRIMARY KEY (`DetailID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `orders_detail`
--
INSERT INTO `orders_detail` VALUES (1, 00001, 4, 1);
INSERT INTO `orders_detail` VALUES (2, 00002, 3, 3);
INSERT INTO `orders_detail` VALUES (3, 00002, 1, 1);
INSERT INTO `orders_detail` VALUES (4, 00002, 4, 1);
-- --------------------------------------------------------
--
-- Table structure for table `product`
--
CREATE TABLE `product` (
`ProductID` int(4) NOT NULL auto_increment,
`ProductName` varchar(100) NOT NULL,
`Price` double NOT NULL,
`Picture` varchar(100) NOT NULL,
PRIMARY KEY (`ProductID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `product`
--
INSERT INTO `product` VALUES (1, 'Product 1', 100, '1.gif');
INSERT INTO `product` VALUES (2, 'Product 2', 200, '2.gif');
INSERT INTO `product` VALUES (3, 'Product 3', 300, '3.gif');
INSERT INTO `product` VALUES (4, 'Product 4', 400, '4.gif');
นำ Query ไปรันหรือสร้าง Database ตามโครงสร้าง
Code ทั้งหมด
product.php
<?php
//session_start();
//session_destroy();
?><html>
<head>
<title>ThaiCreate.Com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM product";
$objQuery = mysql_query($strSQL) or die(mysql_error());
?>
<table width="327" border="1">
<tr>
<td width="101">Picture</td>
<td width="101">ProductID</td>
<td width="82">ProductName</td>
<td width="79">Price</td>
<td width="37">Cart</td>
</tr>
<?php
while($objResult = mysql_fetch_array($objQuery))
{
?>
<tr>
<td><img src="img/<?php echo $objResult["Picture"];?>"></td>
<td><?php echo $objResult["ProductID"];?></td>
<td><?php echo $objResult["ProductName"];?></td>
<td><?php echo $objResult["Price"];?></td>
<td><a href="order.php?ProductID=<?php echo $objResult["ProductID"];?>">Order</a></td>
</tr>
<?php
}
?>
</table>
<br><br><a href="show.php">View Cart</a> | <a href="clear.php">Clear Cart</a>
<?php
mysql_close();
?>
</body>
</html>
order.php
<?php
ob_start();
session_start();
if(!isset($_SESSION["intLine"]))
{
$_SESSION["intLine"] = 0;
$_SESSION["strProductID"][0] = $_GET["ProductID"];
$_SESSION["strQty"][0] = 1;
header("location:show.php");
}
else
{
$key = array_search($_GET["ProductID"], $_SESSION["strProductID"]);
if((string)$key != "")
{
$_SESSION["strQty"][$key] = $_SESSION["strQty"][$key] + 1;
}
else
{
$_SESSION["intLine"] = $_SESSION["intLine"] + 1;
$intNewLine = $_SESSION["intLine"];
$_SESSION["strProductID"][$intNewLine] = $_GET["ProductID"];
$_SESSION["strQty"][$intNewLine] = 1;
}
header("location:show.php");
}
?>
show.php
<?php
session_start();
?>
<html>
<head>
<title>ThaiCreate.Com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
if(!isset($_SESSION["intLine"]))
{
echo "Cart empty";
exit();
}
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
?>
<table width="400" border="1">
<tr>
<td width="101">ProductID</td>
<td width="82">ProductName</td>
<td width="82">Price</td>
<td width="79">Qty</td>
<td width="79">Total</td>
<td width="10">Del</td>
</tr>
<?php
$Total = 0;
$SumTotal = 0;
for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
{
if($_SESSION["strProductID"][$i] != "")
{
$strSQL = "SELECT * FROM product WHERE ProductID = '".$_SESSION["strProductID"][$i]."' ";
$objQuery = mysql_query($strSQL) or die(mysql_error());
$objResult = mysql_fetch_array($objQuery);
$Total = $_SESSION["strQty"][$i] * $objResult["Price"];
$SumTotal = $SumTotal + $Total;
?>
<tr>
<td><?php echo $_SESSION["strProductID"][$i];?></td>
<td><?php echo $objResult["ProductName"];?></td>
<td><?php echo $objResult["Price"];?></td>
<td><?php echo $_SESSION["strQty"][$i];?></td>
<td><?php echo number_format($Total,2);?></td>
<td><a href="delete.php?Line=<?php echo $i;?>">x</a></td>
</tr>
<?php
}
}
?>
</table>
Sum Total <?php echo number_format($SumTotal,2);?>
<br><br><a href="product.php">Go to Product</a>
<?php
if($SumTotal > 0)
{
?>
| <a href="checkout.php">CheckOut</a>
<?php
}
?>
<?php
mysql_close();
?>
</body>
</html>
delete.php
<?php
ob_start();
session_start();
$Line = $_GET["Line"];
$_SESSION["strProductID"][$Line] = "";
$_SESSION["strQty"][$Line] = "";
header("location:show.php");
?>
checkout.php
<?php
session_start();
?>
<html>
<head>
<title>ThaiCreate.Com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
?>
<table width="400" border="1">
<tr>
<td width="101">ProductID</td>
<td width="82">ProductName</td>
<td width="82">Price</td>
<td width="79">Qty</td>
<td width="79">Total</td>
</tr>
<?php
$Total = 0;
$SumTotal = 0;
for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
{
if($_SESSION["strProductID"][$i] != "")
{
$strSQL = "SELECT * FROM product WHERE ProductID = '".$_SESSION["strProductID"][$i]."' ";
$objQuery = mysql_query($strSQL) or die(mysql_error());
$objResult = mysql_fetch_array($objQuery);
$Total = $_SESSION["strQty"][$i] * $objResult["Price"];
$SumTotal = $SumTotal + $Total;
?>
<tr>
<td><?php echo $_SESSION["strProductID"][$i];?></td>
<td><?php echo $objResult["ProductName"];?></td>
<td><?php echo $objResult["Price"];?></td>
<td><?php echo $_SESSION["strQty"][$i];?></td>
<td><?php echo number_format($Total,2);?></td>
</tr>
<?php
}
}
?>
</table>
Sum Total <?php echo number_format($SumTotal,2);?>
<br><br>
<form name="form1" method="post" action="save_checkout.php">
<table width="304" border="1">
<tr>
<td width="71">Name</td>
<td width="217"><input type="text" name="txtName"></td>
</tr>
<tr>
<td>Address</td>
<td><textarea name="txtAddress"></textarea></td>
</tr>
<tr>
<td>Tel</td>
<td><input type="text" name="txtTel"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="txtEmail"></td>
</tr>
</table>
<input type="submit" name="Submit" value="Submit">
</form>
<?php
mysql_close();
?>
</body>
</html>
save_checkout.php
<?php
session_start();
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
$Total = 0;
$SumTotal = 0;
$strSQL = "
INSERT INTO orders (OrderDate,Name,Address,Tel,Email)
VALUES
('".date("Y-m-d H:i:s")."','".$_POST["txtName"]."','".$_POST["txtAddress"]."' ,'".$_POST["txtTel"]."','".$_POST["txtEmail"]."')
";
mysql_query($strSQL) or die(mysql_error());
$strOrderID = mysql_insert_id();
for($i=0;$i<=(int)$_SESSION["intLine"];$i++)
{
if($_SESSION["strProductID"][$i] != "")
{
$strSQL = "
INSERT INTO orders_detail (OrderID,ProductID,Qty)
VALUES
('".$strOrderID."','".$_SESSION["strProductID"][$i]."','".$_SESSION["strQty"][$i]."')
";
mysql_query($strSQL) or die(mysql_error());
}
}
mysql_close();
session_destroy();
header("location:finish_order.php?OrderID=".$strOrderID);
?>
finish_order.php
<html>
<head>
<title>ThaiCreate.Com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
Finish Your Order. <br><br>
<a href="view_order.php?OrderID=<?php echo $_GET["OrderID"];?>">View Order</a>
</body>
</html>
view_order.php
<html>
<head>
<title>ThaiCreate.Com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
mysql_connect("localhost","root","root");
mysql_select_db("mydatabase");
$strSQL = "SELECT * FROM orders WHERE OrderID = '".$_GET["OrderID"]."' ";
$objQuery = mysql_query($strSQL) or die(mysql_error());
$objResult = mysql_fetch_array($objQuery);
?>
<table width="304" border="1">
<tr>
<td width="71">OrderID</td>
<td width="217">
<?php echo $objResult["OrderID"];?></td>
</tr>
<tr>
<td width="71">Name</td>
<td width="217">
<?php echo $objResult["Name"];?></td>
</tr>
<tr>
<td>Address</td>
<td><?php echo $objResult["Address"];?></td>
</tr>
<tr>
<td>Tel</td>
<td><?php echo $objResult["Tel"];?></td>
</tr>
<tr>
<td>Email</td>
<td><?php echo $objResult["Email"];?></td>
</tr>
</table>
<br>
<table width="400" border="1">
<tr>
<td width="101">ProductID</td>
<td width="82">ProductName</td>
<td width="82">Price</td>
<td width="79">Qty</td>
<td width="79">Total</td>
</tr>
<?php
$Total = 0;
$SumTotal = 0;
$strSQL2 = "SELECT * FROM orders_detail WHERE OrderID = '".$_GET["OrderID"]."' ";
$objQuery2 = mysql_query($strSQL2) or die(mysql_error());
while($objResult2 = mysql_fetch_array($objQuery2))
{
$strSQL3 = "SELECT * FROM product WHERE ProductID = '".$objResult2["ProductID"]."' ";
$objQuery3 = mysql_query($strSQL3) or die(mysql_error());
$objResult3 = mysql_fetch_array($objQuery3);
$Total = $objResult2["Qty"] * $objResult3["Price"];
$SumTotal = $SumTotal + $Total;
?>
<tr>
<td><?php echo $objResult2["ProductID"];?></td>
<td><?php echo $objResult3["ProductName"];?></td>
<td><?php echo $objResult3["Price"];?></td>
<td><?php echo $objResult2["Qty"];?></td>
<td><?php echo number_format($Total,2);?></td>
</tr>
<?php
}
?>
</table>
Sum Total <?php echo number_format($SumTotal,2);?>
<?php
mysql_close();
?>
</body>
</html>
clear.php
<?php
ob_start();
session_start();
session_destroy();
header("location:show.php");
?>
Screenshot
หน้าจอ Screen แสดงสินค้า เมื่อคลิกที่ Order ระบบก็จะทำการเก็บสินค้าลงใน Cart
หน้าจอ Screen แสดง Cart ที่ได้เลือกไว้
หน้าจอสำหรับ Checkout และกรอกข้อมูลลูกค้า
หน้าจอบันทึกข้อมูลเรียบร้อยแล้ว
หน้าจอแสดงรายละเอียดสั่งซื้อหลังจากเสร็จสิ้นกระบวนการแล้ว
Download Code !!
บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : Ajax Shopping Cart (PHP+MySQL and ASP+Access)
Go to : PHP MySQL Multiple Column
Go to : PHP Session ($_SESSION,$HTTP_SESSION_VARS)
Go to : เห็นถามกันบ่อยๆ php เก็บสินค้าลงในตะกร้าลง ด้วย session แบบไม่ให้เลือกสินค้าซ้ำ หรือ เลือกซ้ำแล้วจะให้บวกเพิ่มทีล่ะหนึ่ง
ตอนที่ 2 พัฒนาเพิ่มให้สามารถแก้ไขจำนวน Qty ที่สั่งได้
แบบที่ 1 : แบบแก้ไขผ่าน Textbox
แบบที่ 2 : แบบแก้ไขผ่าน Select แบบ List
Go to : Part 2 : PHP ระบบตะกร้าสินค้า (Shopping Cart) แบบระบุจำนวน และ แก้ไขจำนวน ที่สั่ง (Qty) ได้
Go to : PHP กับ MySQL (mysqli function )สร้าง Shopping Cart ตะกร้าสินค้า ง่าย ๆ ด้วย PHP
|
|
|
|
|
|
|
|
Score Rating : |
|
|
Create Date : |
2012-03-15 10:42:54 |
|
View : |
224,700 |
|
Download : |
No files
|
|
|
|
|
|
|
|