Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,025

HOME > Free Web Script > PHP > PHP สร้างระบบตะกร้าสั่งซื้อสินค้า Shopping Cart ด้วย Session และ Array (PHP กับ MySQL)



Clound SSD Virtual Server
 

PHP สร้างระบบตะกร้าสั่งซื้อสินค้า Shopping Cart ด้วย Session และ Array (PHP กับ MySQL)

  PHP สร้างระบบตะกร้า Shopping Cart ด้วย Session และ Array สำหรับตัวอย่าง Script นี้เป็นการสร้างระบบตะกร้าสินค้า หรือ Shopping Cart แบบง่าย ๆ โดยหลักการก็คือดึงข้อมูลจาก MySQL มาแสดง และให้ผู้ใช้ได้ทำการเลือกสินค้า ลงในตะกร้า โดยใช้ระบบจัดเก็บแบบ PHP Array ผ่าน Session โดยลูกค้าสามารถทำการเลือกสินค้าอื่น ๆ ได้ตลอดเวลาที่อยู่ในหน้าจอบนเว็บ โดยในตัวอย่างเมื่อลูกค้าได้เลือกสินค้าซ้ำกับสินค้าที่ได้เลือกแล้วก็จะมีการบวกหนึ่งให้อัตโนมัติ และสามารถลบรายการที่ได้เลือกไว้แล้ว รวมทั้งหน้าจอสำหรับ Checkout การกรอก ข้อมูลชื่อและที่อยู่ในการจัดส่งสินค้า และสุดท้ายหลังจากทำการ Checkout แล้วก็จะแสดงข้อมูลที่ได้ถูกกจัดเก็บลงในฐานข้อมูล MySQL พร้อมกับหมายเลข OrderID เพื่ออ้างอิง

Screenshot

PHP Shopping Cart (Session and Array)

คุณสมบัติและความสามารถของตัวอย่างนี้
- แสดงรายละเอียดสินค้าจากฐานข้อมูล MySQL
- จัดเก็บข้อมูลการสั่งซื้อในรูปแบบ PHP และ Session
- หน้าจอสำหรับ Checkout
- หน้าจอแสดงรายละเอียดการสั่งซื้อ

ตารางประกอบด้วย 3 ตารางคือ
- product
- orders
- orders_detail


โครงสร้างตาราง product เก็บรายละเอียดสินค้า

PHP Shopping Cart (Session and Array)

โครงสร้างตาราง orders เก็บข้อมูลลูกค้าที่สั่งซื้อ และหมายเลข OrderID

PHP Shopping Cart (Session and Array)

โครงสร้างตาราง orders_detail เก็บรายละเอียดของแต่ล่ะ OrderID

PHP Shopping Cart (Session and Array)


ตารางของ 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

PHP Shopping Cart (Session and Array)

หน้าจอ Screen แสดงสินค้า เมื่อคลิกที่ Order ระบบก็จะทำการเก็บสินค้าลงใน Cart


PHP Shopping Cart (Session and Array)

หน้าจอ Screen แสดง Cart ที่ได้เลือกไว้


PHP Shopping Cart (Session and Array)

หน้าจอสำหรับ Checkout และกรอกข้อมูลลูกค้า


PHP Shopping Cart (Session and Array)

หน้าจอบันทึกข้อมูลเรียบร้อยแล้ว


PHP Shopping Cart (Session and Array)

หน้าจอแสดงรายละเอียดสั่งซื้อหลังจากเสร็จสิ้นกระบวนการแล้ว


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

PHP Shopping Cart Chage Qty

PHP Shopping Cart Chage Qty

แบบที่ 2 : แบบแก้ไขผ่าน Select แบบ List

PHP Shopping Cart Chage Qty

PHP Shopping Cart Chage Qty

Go to : Part 2 : PHP ระบบตะกร้าสินค้า (Shopping Cart) แบบระบุจำนวน และ แก้ไขจำนวน ที่สั่ง (Qty) ได้

Go to : PHP กับ MySQL (mysqli function )สร้าง Shopping Cart ตะกร้าสินค้า ง่าย ๆ ด้วย PHP


   
Share

Bookmark.
  Score Rating :
  Create Date : 2012-03-15 10:42:54
  View : 221,504
  Download : No files
     
Sponsored Links
PHP สร้าง WebBoard กระดานถาม-ตอบ เว็บบอร์ดสำหรับเว็บ PHP กับ MySQL
บทความ php ตัวอย่าง code การสร้าง webboard ด้วย php กับ mysql แบบง่าย ๆ สามารถนำไปใช้งานจริง
Rating : Update : 2017-03-24 21:07:15
PHP Upload MySQL BLOB Image (BLOB Binary Data in a MySQL Database)
ตัวอย่าง Script PHP ในการ Upload ไฟล์ลงในฐานข้อมูล MySQL โดยเก็บไฟล์ในรูปแบบของ Binary ผ่าน BLOB
Rating : Update : 2017-03-24 21:02:00
PHP Upload Oracle BLOB (Binary Data)
ตัวอย่างการ php กับ oracle ใช้ในการ upload ไฟล์ BLOB Data Type ลงในฐานข้อมูล Oracle Database Server
Rating : Update : 2017-03-24 21:04:13
PHP Upload File BLOB/Image to SQL Server Database (mssql-OPENROWSET)
ตัวอย่างการ script ใช้ในการ upload ไฟล์ Blob หรือ Image Data Type ลงในฐานข้อมูล SQL Server 2000,2005,2008
Rating : Update : 2017-03-24 21:02:40
ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่