|
PHP กับ MySQL (mysqli function) สร้าง Shopping Cart ตะกร้าสินค้า ง่าย ๆ ด้วย PHP + mysqli |
PHP กับ MySQL (mysqli function) สร้าง Shopping Cart ตะกร้าสินค้า ง่าย ๆ ด้วย PHP สำหรับตัวอย่าง Script นี้เป็นการสร้างระบบตะกร้าสินค้า หรือ Shopping Cart แบบง่าย ๆ ด้วย ฟังก์ชั่น mysqli ร่วมกับ PHP/MySQL โดยหลักการก็คือดึงข้อมูลจาก 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
<html>
<head>
<title>ThaiCreate.Com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$serverName = "localhost";
$userName = "root";
$userPassword = "root";
$dbName = "mydatabase";
$objCon = mysqli_connect($serverName,$userName,$userPassword,$dbName);
if (!$objCon) {
echo $objCon->connect_error;
exit();
}
$strSQL = "SELECT * FROM product";
$objQuery = mysqli_query($objCon,$strSQL);
if(!$objQuery)
{
echo $objCon->error;
exit();
}
?>
<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 = mysqli_fetch_array($objQuery,MYSQLI_ASSOC))
{
?>
<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
mysqli_close($objCon);
?>
</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();
}
$serverName = "localhost";
$userName = "root";
$userPassword = "root";
$dbName = "mydatabase";
$objCon = mysqli_connect($serverName,$userName,$userPassword,$dbName);
if (!$objCon) {
echo $objCon->connect_error;
exit();
}
?>
<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 = mysqli_query($objCon,$strSQL);
$objResult = $objResult = mysqli_fetch_array($objQuery,MYSQLI_ASSOC);
$Total = $_SESSION["strQty"][$i] * $objResult["Price"];
$SumTotal = $SumTotal + $Total;
?>
<tr>
<td><?=$_SESSION["strProductID"][$i];?></td>
<td><?=$objResult["ProductName"];?></td>
<td><?=$objResult["Price"];?></td>
<td><?=$_SESSION["strQty"][$i];?></td>
<td><?=number_format($Total,2);?></td>
<td><a href="delete.php?Line=<?=$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
mysqli_close($objCon);
?>
</body>
</html>
delete.php
<?php
ob_start();
session_start();
if(isset($_GET["Line"]))
{
$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
if(!isset($_SESSION["intLine"]))
{
echo "Cart Empty";
exit();
}
$serverName = "localhost";
$userName = "root";
$userPassword = "root";
$dbName = "mydatabase";
$objCon = mysqli_connect($serverName,$userName,$userPassword,$dbName);
if (!$objCon) {
echo $objCon->connect_error;
exit();
}
?>
<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 = mysqli_query($objCon,$strSQL);
$objResult = $objResult = mysqli_fetch_array($objQuery,MYSQLI_ASSOC);
$Total = $_SESSION["strQty"][$i] * $objResult["Price"];
$SumTotal = $SumTotal + $Total;
?>
<tr>
<td><?=$_SESSION["strProductID"][$i];?></td>
<td><?=$objResult["ProductName"];?></td>
<td><?=$objResult["Price"];?></td>
<td><?=$_SESSION["strQty"][$i];?></td>
<td><?=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
mysqli_close($objCon);
?>
</body>
</html>
save_checkout.php
<?php
session_start();
$serverName = "localhost";
$userName = "root";
$userPassword = "root";
$dbName = "mydatabase";
$objCon = mysqli_connect($serverName,$userName,$userPassword,$dbName);
if (!$objCon) {
echo $objCon->connect_error;
exit();
}
$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"]."')
";
$objQuery = mysqli_query($objCon,$strSQL);
if(!$objQuery)
{
echo $objCon->error;
exit();
}
$strOrderID = mysqli_insert_id($objCon);
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]."')
";
mysqli_query($objCon,$strSQL);
}
}
mysqli_close($objCon);
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
$serverName = "localhost";
$userName = "root";
$userPassword = "root";
$dbName = "mydatabase";
$objCon = mysqli_connect($serverName,$userName,$userPassword,$dbName);
if (!$objCon) {
echo $objCon->connect_error;
exit();
}
$strSQL = "SELECT * FROM orders WHERE OrderID = '".$_GET["OrderID"]."' ";
$objQuery = mysqli_query($objCon,$strSQL);
$objResult = $objResult = mysqli_fetch_array($objQuery,MYSQLI_ASSOC);
?>
<table width="304" border="1">
<tr>
<td width="71">OrderID</td>
<td width="217">
<?=$objResult["OrderID"];?></td>
</tr>
<tr>
<td width="71">Name</td>
<td width="217">
<?=$objResult["Name"];?></td>
</tr>
<tr>
<td>Address</td>
<td><?=$objResult["Address"];?></td>
</tr>
<tr>
<td>Tel</td>
<td><?=$objResult["Tel"];?></td>
</tr>
<tr>
<td>Email</td>
<td><?=$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 = mysqli_query($objCon,$strSQL2);
while($objResult2 = mysqli_fetch_array($objQuery2,MYSQLI_ASSOC))
{
$strSQL3 = "SELECT * FROM product WHERE ProductID = '".$objResult2["ProductID"]."' ";
$objQuery3 = mysqli_query($objCon,$strSQL3);
$objResult3 = $objResult = mysqli_fetch_array($objQuery3,MYSQLI_ASSOC);
$Total = $objResult2["Qty"] * $objResult3["Price"];
$SumTotal = $SumTotal + $Total;
?>
<tr>
<td><?=$objResult2["ProductID"];?></td>
<td><?=$objResult3["ProductName"];?></td>
<td><?=$objResult3["Price"];?></td>
<td><?=$objResult2["Qty"];?></td>
<td><?=number_format($Total,2);?></td>
</tr>
<?php
}
?>
</table>
Sum Total <?php echo number_format($SumTotal,2);?>
<?php
mysqli_close($objCon);
?>
</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
Download Code ทั้งหมด
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2015-11-10 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|