ข้ามไปยังเนื้อหาหลัก
itOffside
Onmobile อ่าน 25 นาที 257 ความเห็น

PHP Workshop ระบบตะกร้าสั่งซื้อสินค้า (Shopping Cart)

PHP
ตัวอย่างระบบตะกร้าสินค้า

PHP Workshop ระบบตะกร้าสั่งซื้อสินค้า เป็นตัวอย่าง Code โดยใช้ความฟังก์ชั่น PHP Array และ ฟังก์ชั่น Session ในการทำงานของระบบตะกร้าโดยดึงข้อมูลสินค้าจาก MySQL (ฐานข้อมูล) มาแสดง ส่วนหลักการทำงานของ Code นั้นเป็นหลักการทำงานแบบง่ายๆ ผู้อ่านและผู้ศึกษาสามารถทำความเข้าใจในบทความนี้ได้อย่างรวดเร็ว โดยจะมีรูปภาพพร้อมคำบรรยายประกอบใต้ภาพ

ความสามารถของระบบ Shopping cart ที่ผู้เขียนได้สร้างขึ้นนั้นมีดังต่อไปนี้

- แสดงรายการสินค้าจากฐานข้อมูลโดยใช้ฐานข้อมูล MySQL
- เก็บข้อมูลของสินค้าลงในตะกร้าสินค้าโดยใช้ Session และ Array
- เก็บสินค้าลงในตะกร้าสินค้าซ้ำรายการได้โดยนำไปเพิ่มจำนวนที่มีอยู่ (บันทึกเพิ่มจำนวน)
- แสดงจำนวนสินค้าในตะกร้าสินค้า
- กำหนดจำนวนสินค้าในหน้าตะกร้าสินค้าได้ตามที่ต้องการ
- ลบสินค้าออกจากตะกร้าสินค้าได้ตามที่ต้องการ
- ระบบจัดเก็บข้อมูลการสั่งซื้อพร้อมรายละเอียดผู้สั่งซื้อลงในฐานข้อมูล MySQL

สร้างฐานข้อมูลชื่อ shopping_cart หลังจากสร้างเสร็จเรียบร้อยแล้วให้นำ Script SQL ด้านล่างนี้ไป Run เพื่อทำการสร้างตาราง

— phpMyAdmin SQL Dump
— version 4.0.9
— http://www.phpmyadmin.net
—
— Host: 127.0.0.1
— Generation Time: Apr 15, 2014 at 06:58 PM
— Server version: 5.5.34
— PHP Version: 5.4.22

SET SQL_MODE = “NO_AUTO_VALUE_ON_ZERO”;
SET time_zone = “+00:00”;

—
— Database: `shopping_cart`
—

— ——————————————————–

—
— Table structure for table `orders`
—

CREATE TABLE IF NOT EXISTS `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_date` datetime NOT NULL,
`order_fullname` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`order_address` tinytext COLLATE utf8_unicode_ci NOT NULL,
`order_phone` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

—
— Table structure for table `order_details`
—

CREATE TABLE IF NOT EXISTS `order_details` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_detail_quantity` tinyint(4) NOT NULL,
`order_detail_price` decimal(10,2) NOT NULL,
`product_id` int(11) NOT NULL,
`order_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;

—
— Table structure for table `products`
—

CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_code` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`product_name` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`product_desc` tinytext COLLATE utf8_unicode_ci NOT NULL,
`product_img_name` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`product_price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `product_code` (`product_code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;

—
— Dumping data for table `products`
—

INSERT INTO `products` (`id`, `product_code`, `product_name`, `product_desc`, `product_img_name`, `product_price`) VALUES
(1, ‘P00001’, ‘iPhone 5s’, ‘โทรศัพท์คุณภาพยี่ห้อ Apple’, ‘iphone5s.jpg’, ‘25000.00’),
(2, ‘P00002’, ‘Samsung Galaxy S4’, ‘โทรศัพท Andriod ยอดนิยม’, ‘ss4.jpg’, ‘17890.00’),
(3, ‘P00003’, ‘Samsung Galaxy Note3’, ‘โทรศัพท์สำหรับคนชอบจด’, ‘note3.jpg’, ‘23000.00’);

1. สร้างไฟล์เชื่อมต่อฐานข้อมูลชื่อ connect.php แล้วนำโค๊ดด้านล่างนี้ใส่

<?php
/*
 * set var
 */
$cfHost = "localhost";
$cfUser = "root";
$cfPassword = "";
$cfDatabase = "shopping_cart";

/*
 * connection mysql
 */
$meConnect = mysql_connect($cfHost, $cfUser, $cfPassword) or die("Error conncetion mysql...");
$meDatabase = mysql_select_db($cfDatabase);
mysql_query("SET NAMES UTF8");
?>

2. คัดลอกโฟล์เดอร์ Bootstrap และโฟล์เดอร์ images ไปวางในโฟล์เดอร์โปรเจ็ค เช่น www/shopping_cart/ เป็นต้น โดยสามารถดาวน์โหลดไฟล์ได้จากด้านล่างบทความเรื่องนี้ (ท้ายบทความ)

3. สร้าง Project ใหม่แล้ว เพิ่ม code ในตัวอย่างด้านล่างนี้ลงไปในไฟล์ index.php ซึ่งการทำงานของไฟล์ index.php นี้จะแสดงรายการสินค้าที่จะทำการหยิบใส่ตะกร้า

<?php
session_start();
require 'connect.php';
$meSql = "SELECT * FROM products ";
$meQuery = mysql_query($meSql);

$action = isset($_GET['a']) ? $_GET['a'] : "";
$itemCount = isset($_SESSION['cart']) ? count($_SESSION['cart']) : 0;
if(isset($_SESSION['qty'])){
$meQty = 0;
foreach($_SESSION['qty'] as $meItem){
$meQty = $meQty + $meItem;
}
}else{
$meQty=0;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>itoffside.com shopping cart</title>

<!-- Bootstrap -->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/nava.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

</head>
<body>
<div class="container">

<!-- Static navbar -->
<div class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Shopping Cart - ItOffside.com</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="index.php">หน้าแรกสินค้า</a></li>
<li><a href="cart.php">ตะกร้าสินค้าของฉัน <span class="badge"><?php echo $meQty; ?></span></a></li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container-fluid -->
</div>

<!-- Main component for a primary marketing message or call to action -->

<h3>หน้าแรกของสินค้า</h3>
<?php
if($action == 'exists'){
echo "<div class=\"alert alert-warning\">เพิ่มจำนวนสินค้าแล้ว</div>";
}
if($action == 'add'){
echo "<div class=\"alert alert-success\">เพิ่มสินค้าลงในตะกร้าเรียบร้อยแล้ว</div>";
}
if($action == 'order'){
echo "<div class=\"alert alert-success\">สั่งซื้อสินค้าเรียบร้อยแล้ว</div>";
}
if($action == 'orderfail'){
echo "<div class=\"alert alert-warning\">สั่งซื้อสินค้าไม่สำเร็จ มีข้อผิดพลาดเกิดขึ้นกรุณาลองใหม่อีกครั้ง</div>";
}
?>
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>รหัสสินค้า</th>
<th>ชื่อสินค้า</th>
<th>รายละเอียด</th>
<th>ราคา</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<?php
while ($meResult = mysql_fetch_assoc($meQuery))
{
?>
<tr>
<td><img src="images/<?php echo $meResult['product_img_name']; ?>" border="0"></td>
<td><?php echo $meResult['product_code']; ?></td>
<td><?php echo $meResult['product_name']; ?></td>
<td><?php echo $meResult['product_desc']; ?></td>
<td><?php echo number_format($meResult['product_price'],2); ?></td>
<td>
<a class="btn btn-primary btn-lg" href="updatecart.php?itemId=<?php echo $meResult['id']; ?>" role="button">
<span class="glyphicon glyphicon-shopping-cart"></span>
หยิบใส่ตะกร้า</a>
</td>
</tr>
<?php
}
?>
</tbody>
</table>

</div> <!-- /container -->

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="bootstrap/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
<?php
mysql_close();
?>

ผลลัพธ์จากไฟล์ index.php

ตัวอย่างระบบตะกร้าสินค้า
ตัวอย่างระบบตะกร้าสินค้า

4. สร้างไฟล์ cart.php แล้วนำ code ด้านล่างไปใส่ การทำงานของไฟล์นี้เป็นการแสดงรายการสินค้าในตะกร้าโดย session จะเก็บข้อมูล id ของสินค้า แล้วนำมาใช้งานด้วยการดึงข้อมูล MySQL

<?php
session_start();
require 'connect.php';
$action = isset($_GET['a']) ? $_GET['a'] : "";
$itemCount = isset($_SESSION['cart']) ? count($_SESSION['cart']) : 0;
if (isset($_SESSION['qty']))
{
$meQty = 0;
foreach ($_SESSION['qty'] as $meItem)
{
$meQty = $meQty + $meItem;
}
} else
{
$meQty = 0;
}
if (isset($_SESSION['cart']) and $itemCount > 0)
{
$itemIds = "";
foreach ($_SESSION['cart'] as $itemId)
{
$itemIds = $itemIds . $itemId . ",";
}
$inputItems = rtrim($itemIds, ",");
$meSql = "SELECT * FROM products WHERE id in ({$inputItems})";
$meQuery = mysql_query($meSql);
$meCount = mysql_num_rows($meQuery);
} else
{
$meCount = 0;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>itoffside.com shopping cart</title>

<!-- Bootstrap -->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/nava.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

</head>
<body>
<div class="container">

<!-- Static navbar -->
<div class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Shopping Cart - ItOffside.com</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="index.php">หน้าแรกสินค้า</a></li>
<li><a href="cart.php">ตะกร้าสินค้าของฉัน <span class="badge"><?php echo $meQty; ?></span></a></li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container-fluid -->
</div>
<h3>ตะกร้าสินค้าของฉัน</h3>
<!-- Main component for a primary marketing message or call to action -->
<?php
if ($action == 'removed')
{
echo "<div class=\"alert alert-warning\">ลบสินค้าเรียบร้อยแล้ว</div>";
}

if ($meCount == 0)
{
echo "<div class=\"alert alert-warning\">ไม่มีสินค้าอยู่ในตะกร้า</div>";
} else
{
?>
<form action="updatecart.php" method="post" name="fromupdate">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>#</th>
<th>รหัสสินค้า</th>
<th>ชื่อสินค้า</th>
<th>รายละเอียด</th>
<th>จำนวน</th>
<th>ราคาต่อหน่วย</th>
<th>จำนวนเงิน</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
<?php
$total_price = 0;
$num = 0;
while ($meResult = mysql_fetch_assoc($meQuery))
{
$key = array_search($meResult['id'], $_SESSION['cart']);
$total_price = $total_price + ($meResult['product_price'] * $_SESSION['qty'][$key]);
?>
<tr>
<td><img src="images/<?php echo $meResult['product_img_name']; ?>" border="0"></td>
<td><?php echo $meResult['product_code']; ?></td>
<td><?php echo $meResult['product_name']; ?></td>
<td><?php echo $meResult['product_desc']; ?></td>
<td>
<input type="text" name="qty[<?php echo $num; ?>]" value="<?php echo $_SESSION['qty'][$key]; ?>" class="form-control" style="width: 60px;text-align: center;">
<input type="hidden" name="arr_key_<?php echo $num; ?>" value="<?php echo $key; ?>">
</td>
<td><?php echo number_format($meResult['product_price'],2); ?></td>
<td><?php echo number_format(($meResult['product_price'] * $_SESSION['qty'][$key]),2); ?></td>
<td>
<a class="btn btn-danger btn-lg" href="removecart.php?itemId=<?php echo $meResult['id']; ?>" role="button">
<span class="glyphicon glyphicon-trash"></span>
ลบทิ้ง</a>
</td>
</tr>
<?php
$num++;
}
?>
<tr>
<td colspan="8" style="text-align: right;">
<h4>จำนวนเงินรวมทั้งหมด <?php echo number_format($total_price,2); ?> บาท</h4>
</td>
</tr>
<tr>
<td colspan="8" style="text-align: right;">
<button type="submit" class="btn btn-info btn-lg">คำนวณราคาสินค้าใหม่</button>
<a href="order.php" type="button" class="btn btn-primary btn-lg">สังซื้อสินค้า</a>
</td>
</tr>
</tbody>
</table>
</form>
<?php
}
?>

</div> <!-- /container -->

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="bootstrap/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
<?php
mysql_close();
?></pre>
5. สร้างไฟล์ updatecart.php แล้วนำ code ด้านล่างนี้ไปใส่ ซึ่งการทำงานของไฟล์นี้คือ เมื่อมีการคลิกปุ่ม "หยิบใส่ตะกร้า" ในหน้า index.php และปุ่ม "คำนวณสินค้าใหม่" ในหน้า cart.php ไฟล์นี้จะถูกทำงานทันที เพื่อบันทึกข้อมูล id สินค้า(ใช้ในการอ้างอิงในการดึงข้อมูลจากฐานขัอมูล) หรือเพิ่มจำนวนสินค้าลงในตะกร้า ลงในตัวแปร session
<pre class="lang:php decode:true" title="updatecart.php"><?php

session_start();
$itemId = isset($_GET['itemId']) ? $_GET['itemId'] : "";
if ($_POST)
{
for ($i = 0; $i < count($_POST['qty']); $i++)
{
$key = $_POST['arr_key_' . $i];
$_SESSION['qty'][$key] = $_POST['qty'][$i];
header('location:cart.php');
}
} else
{
if (!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['qty'][] = array();
}

if (in_array($itemId, $_SESSION['cart']))
{
$key = array_search($itemId, $_SESSION['cart']);
$_SESSION['qty'][$key] = $_SESSION['qty'][$key] + 1;
header('location:index.php?a=exists');
} else
{
array_push($_SESSION['cart'], $itemId);
$key = array_search($itemId, $_SESSION['cart']);
$_SESSION['qty'][$key] = 1;
header('location:index.php?a=add');
}
}
?>

ผลลัพธ์

ตัวอย่างระบบ Shopping cart
ตัวอย่างระบบ Shopping cart

6. สร้างไฟล์ removecart.php แล้วนำ code ด้านล่างไปใส่ สำหรับการทำงานไฟล์นี้จะเป็นการลบรายการสินค้าในตะกร้าออกไปจากตัวแปร? session โดยจะลบทิ้งเฉพาะ id ที่เลือกไว้เท่านั้น

<?php
session_start();

$itemId = isset($_GET['itemId']) ? $_GET['itemId'] : "";

if (!isset($_SESSION['cart']))
{
$_SESSION['cart'] = array();
$_SESSION['qty'][] = array();
}

$key = array_search($itemId, $_SESSION['cart']);
$_SESSION['qty'][$key] = "";

$_SESSION['cart'] = array_diff($_SESSION['cart'], array($itemId));
header('location:cart.php?a=remove');
?></pre>
7. สร้างไฟล์ order.php แล้วนำ code ด้านล่างไปใส่ โดยการทำงานของไฟล์นี้จะแสดงผลรายการที่ต้องการยืนยันสั่งซื้อพร้อมจำนวนและราคาสินค้าที่ไม่สามารถแก้ไขได้(แตกต่างจาก cart.php ที่สามารถแก้ไขได้)
<pre class="lang:php decode:true" title="order.php"><?php
session_start();
require 'connect.php';

$action = isset($_GET['a']) ? $_GET['a'] : "";
$itemCount = isset($_SESSION['cart']) ? count($_SESSION['cart']) : 0;
$_SESSION['formid'] = sha1('itoffside.com' . microtime());
if (isset($_SESSION['qty'])) {
$meQty = 0;
foreach ($_SESSION['qty'] as $meItem) {
$meQty = $meQty + $meItem;
}
} else {
$meQty = 0;
}
if (isset($_SESSION['cart']) and $itemCount > 0) {
$itemIds = "";
foreach ($_SESSION['cart'] as $itemId) {
$itemIds = $itemIds . $itemId . ",";
}
$inputItems = rtrim($itemIds, ",");
$meSql = "SELECT * FROM products WHERE id in ({$inputItems})";
$meQuery = mysql_query($meSql);
$meCount = mysql_num_rows($meQuery);
} else {
$meCount = 0;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>itoffside.com shopping cart</title>

<!-- Bootstrap -->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/nava.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script type="text/javascript">
function updateSubmit(){
if(document.formupdate.order_fullname.value == ""){
alert('โปรดใส่ชื่อนามสกุลด้วย!');
document.formupdate.order_fullname.focus();
return false;
}
if(document.formupdate.order_address.value == ""){
alert('โปรดใส่ที่อยู่ด้วย!');
document.formupdate.order_address.focus();
return false;
}
if(document.formupdate.order_phone.value == ""){
alert('โปรดใส่เบอร์โทรด้วย!');
document.formupdate.order_phone.focus();
return false;
}
document.formupdate.submit();
return false;
}
</script>
</head>
<body>
<div class="container">

<!-- Static navbar -->
<div class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Shopping Cart - ItOffside.com</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="index.php">หน้าแรกสินค้า</a></li>
<li><a href="cart.php">ตะกร้าสินค้าของฉัน <span class="badge"><?php echo $meQty; ?></span></a></li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container-fluid -->
</div>
<h3>รายการสั่งซื้อ</h3>
<!-- Main component for a primary marketing message or call to action -->
<?php
if ($action == 'removed')
{
echo "<div class=\"alert alert-warning\">ลบสินค้าเรียบร้อยแล้ว</div>";
}

if ($meCount == 0)
{
echo "<div class=\"alert alert-warning\">ไม่มีสินค้าอยู่ในตะกร้า</div>";
} else
{
?>

<form action="updateorder.php" method="post" name="formupdate" role="form" id="formupdate" onsubmit="JavaScript:return updateSubmit();">
<div class="form-group">
<label for="exampleInputEmail1">ชื่อ-นามสกุล</label>
<input type="text" class="form-control" id="order_fullname" placeholder="ใส่ชื่อนามสกุล" style="width: 300px;" name="order_fullname">
</div>
<div class="form-group">
<label for="exampleInputAddress">ที่อยู่</label>
<textarea class="form-control" rows="3" style="width: 500px;" name="order_address" id="order_address"></textarea>
</div>
<div class="form-group">
<label for="exampleInputPhone">เบอร์โทรศัพท์</label>
<input type="text" class="form-control" id="order_phone" placeholder="ใส่เบอร์โทรศัพท์ที่สามารถติดต่อได้" style="width: 300px;" name="order_phone">
</div>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>รหัสสินค้า</th>
<th>ชื่อสินค้า</th>
<th>รายละเอียด</th>
<th>จำนวน</th>
<th>ราคาต่อหน่วย</th>
<th>จำนวนเงิน</th>
</tr>
</thead>
<tbody>
<?php
$total_price = 0;
$num = 0;
while ($meResult = mysql_fetch_assoc($meQuery))
{
$key = array_search($meResult['id'], $_SESSION['cart']);
$total_price = $total_price + ($meResult['product_price'] * $_SESSION['qty'][$key]);
?>
<tr>
<td><?php echo $meResult['product_code']; ?></td>
<td><?php echo $meResult['product_name']; ?></td>
<td><?php echo $meResult['product_desc']; ?></td>
<td>
<?php echo $_SESSION['qty'][$key]; ?>
<input type="hidden" name="qty[]" value="<?php echo $_SESSION['qty'][$key]; ?>" />
<input type="hidden" name="product_id[]" value="<?php echo $meResult['id']; ?>" />
<input type="hidden" name="product_price[]" value="<?php echo $meResult['product_price']; ?>" />
</td>
<td><?php echo number_format($meResult['product_price'], 2); ?></td>
<td><?php echo number_format(($meResult['product_price'] * $_SESSION['qty'][$key]), 2); ?></td>
</tr>
<?php
$num++;
}
?>
<tr>
<td colspan="8" style="text-align: right;">
<h4>จำนวนเงินรวมทั้งหมด <?php echo number_format($total_price, 2); ?> บาท</h4>
</td>
</tr>
<tr>
<td colspan="8" style="text-align: right;">
<input type="hidden" name="formid" value="<?php echo $_SESSION['formid']; ?>"/>
<a href="cart.php" type="button" class="btn btn-danger btn-lg">ย้อนกลับ</a>
<button type="submit" class="btn btn-primary btn-lg">บันทึกการสั่งซื้อสินค้า</button>
</td>
</tr>
</tbody>
</table>
</form>
<?php
}
?>

</div> <!-- /container -->

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="bootstrap/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
<?php
mysql_close();
?>

ผลลัพธ์

ตัวอย่างระบบ Shopping cart
ตัวอย่างระบบ Shopping cart

8. สร้างไฟล์ updateorder.php แล้วนำ code ด้านล่างนี้ไปใส่ จากตัวอย่าง code การทำงานของ code นี้คือจะบันทึกข้อมูลการสั่งซื้อสินค้าและผู้สั่งซื้อสินค้าจากฟอร์ม order.php ทันทีเมื่อมีการคลิกปุ่ม "บันทึกการสั่งซื้อสินค้า"

<?php
session_start();
$formid = isset($_SESSION['formid']) ? $_SESSION['formid'] : "";
if ($formid != $_POST['formid']) {
	echo "E00001!! SESSION ERROR RETRY AGAINT.";
} else {
	unset($_SESSION['formid']);
	if ($_POST) {
		require 'connect.php';
		$order_fullname = mysql_real_escape_string($_POST['order_fullname']);
		$order_address = mysql_real_escape_string($_POST['order_address']);
		$order_phone = mysql_real_escape_string($_POST['order_phone']);
$meSql = "INSERT INTO orders (order_date, order_fullname, order_address, order_phone) VALUES (NOW(),'{$order_fullname}','{$order_address}','{$order_phone}') ";
$meQeury = mysql_query($meSql);
if ($meQeury) {
$order_id = mysql_insert_id();
for ($i = 0; $i < count($_POST['qty']); $i++) {
$order_detail_quantity = mysql_real_escape_string($_POST['qty'][$i]);
$order_detail_price = mysql_real_escape_string($_POST['product_price'][$i]);
$product_id = mysql_real_escape_string($_POST['product_id'][$i]);
$lineSql = "INSERT INTO order_details (order_detail_quantity, order_detail_price, product_id, order_id) ";
$lineSql .= "VALUES (";
$lineSql .= "'{$order_detail_quantity}',";
$lineSql .= "'{$order_detail_price}',";
$lineSql .= "'{$product_id}',";
$lineSql .= "'{$order_id}'";
$lineSql .= ") ";
mysql_query($lineSql);
}
mysql_close();
unset($_SESSION['cart']);
unset($_SESSION['qty']);
header('location:index.php?a=order');
}else{
mysql_close();
header('location:index.php?a=orderfail');
}
}
}
?>

เสร็จแล้วสำหรับระบบตะกร้าสั่งซื้อสินค้าโดยใช้ฟังก์ชั่น Session และ Array แบบง่ายๆผู้อ่านสามารถดาวน์โหลด Source Code ได้ที่ลิงค์ด้านล่างนี้เลยครับ

<a title="ดาวน์โหลดระบบตะกร้าสั่งซื้อสินค้า" href="http://www.mediafire.com/download/heagbrrad3fricl/shopping_cart.rar" target="_blank" rel="noopener noreferrer">ดาวน์โหลดไฟล์ระบบตะกร้าสั่งซื้อสินค้า!</a>รหัสแตกไฟล์ rar = www.itoffside.com

Onmobile

โปรแกรมเมอร์

ความเห็น (257)

  • ประจักร
    สวัสดีครับผมอยากถามหน่อยครับคือผมได้นำโค้ดที่ท่านได้เขียนไว้มาลองใช้ดูครับระบบใช้งานได้ดีครับ แต่อยากรู้ว่าข้อมูลการสั่งซื้อเราจะทำไงครับ เราจะดึงขึ้นมาโชว์ที่หน้าเว็บหรือเราจะสั่งให้ส่งคำสั่งซื้อมาทางเมล์เราได้ไหมครับ ขอบคุณล้วงหน้าครับท่าน
    • Onmobile ผู้เขียน
      1. การที่จะดึงข้อมูลสั่งซื้อมาโชว์ในหน้าเว็บ เราสามารถดึงจากตาราง orders และ order_details ซึ่งเราจะทราบชื่อสินค้าและชื่อผู้สั่งซื้อจาก id สินค้า/ ข้อมูลชื่อผู้สั่งซื้อ ในบทความนี้ผมไม่ได้เขียนไว้เพิ่มเติม แต่สามารถนำไปประยุกต์ใช้ได้ 2. ส่งอีเมล์ตอนสั่งซื้อก็เขียนโปรแกรมเพิ่มในไฟล์ updateorder.php โดยอาจจะใช้ library phpmailer ช่วย
      • Kittiphum
        การที่จะดึงข้อมูลสั่งซื้อมาโชว์ในหน้าเว็บ ทำไมมันโชว์ทุกรายการเลยครับ ผมต้องทำไงครับ
      • namfon
        อยากได้ระบบจัดการข้อมูลสินค้าค่ะ
    • นารินทร์
      สวัสดีค่ะ เพิ่งเข้ามาอ่านบทความนี้เป็นครั้งแรก เขียนเข้าใจง่ายค่ะ กำลังเริ่มศึกษาการพัฒนาระบบด้วย PHP ระบบตะกร้าสินค้าค่ะ ดาวน์โหลดไฟล์ตะกร้าสั่งซื้อสินค้ามา พอแตกไฟล์ ถามหารหัสผ่าน ไม่ทราบว่าดูได้จากไหนคะ รบกวนขอความอนุเคราะห์ด้วยนะคะ
      • Onmobile ผู้เขียน
        รหัสแตกไฟล์ www.itoffside.com
  • ประจักร
    แล้วก็ยังหาดอีกไฟล์ครับ คือไฟล์อัพโหลดข้อมูลลงฐานข้อมูลครับท่าน ขอหน่อยได้ไหม
    • Onmobile ผู้เขียน
      script sql ฐานข้อมูลด้านบนสุดเลยครับ
      • pare
        ขอบคุณมากค่ะ มีประโยชน์มากเลย^^
  • ประจักร
    script sql ฐานข้อมูลด้านบนสุดเลยครับ ++ตอบครับ+++ ผมสร้างแล้ว แต่ที่ผมอยากได้คือ script อัพข้อมูลเป็นพวกรูปสินค้า ระหัส รายละเอียดสินค้า ลงฐานข้อมูลไงครับ คือเราต้องลงสินค้าไว้ในฐานข้อมูลก่อน ค่อยถึงขึ้นมาแสดงนิครับ ถ้าผมถามผิดหรือยังไงก็ ขอโทษท่านด้วยครับผม มือใหม่ครับ แต่ผมลองทำดูจากวิธีที่ผมรู้มาแล้วสามารถ insert ไฟล์ลงฐานข้อได้แต่ที่หน้า index ทำไม่มันไม่แสดงรูปสินค้าที่ผมได้ insert ลงไปฐานข้อมูลอะครับ ผมอยากติอต่อท่านได้จังครับไม่รู้ว่าจะขอเบอร์ได้ไหมครับ
    • Onmobile ผู้เขียน
      คุณต้องเขียนโปรแกรม เพิ่มสินค้าเพิ่มเติม ครับ โดยเพิ่มไปตาราง products โดยรูปภาพนั้น เราเก็บบันทึกเฉพาะ ชื่อรูปภาพลงไปในฟิล์ด product_img_name ส่วนรูปให้ upload ไปไว้ในโฟล์เดอร์ images และตอนแสดงออกมาให้อ้างอิงพาธ เฉยๆ *บทความนี้เป็นเรื่องเกี่ยวกับการทำระบบตะกร้า ครับ อาจจะไม่ครอบคลุมกับการบันทึกสินค้า แต่สามารถเอาไปต่อยอดได้
  • ประจักร
    อ๋อครับ นี้แสดงว่ารูปสินค้าไม่ได้ดึงมาจากฐานข้อมูลหรอครับ แต่ผมลองทำ insert ไฟล์ลงฐานข้อมูลแล้วเลยกับมาหน้าดูที่หน้าแรก มิน่าไม่โชว์ครับ แล้วระบบที่ท่านเขียนไว้ท่านสั่งให้ โชว์ข้อมูลสินค้ากี่รายการต่อหน้าครับ
    • Onmobile ผู้เขียน
      ผมไม่ได้แบ่งหน้าครับ
  • ประจักร
    ท่านพอว่างไหมครับ ท่านเขียนโปรแกรม เพิ่มสินค้าให้ผมหน่อยได้ไหมครับผมชอบระบบนี้มากเลยเราสั่งซื้อสินค้าได้โดยไม่ต้องสมัครสมาชิกเลย
    • Onmobile ผู้เขียน
      ผมว่างผมจะเขียนบทความเพิ่มครับ :)
  • ประจักร
    ขอบพระคุณนะครับท่าน พอดีผมมือใหม่ครับกำลังศึกษาการพัฒนาเว็บครับ ขอเรียก อาจารย์ละกันครับ ผมเข้ามาที่นี้ก็เพราะหาความรูู้ท่านก็เป็นคนเขียนบทความก็เท่ากับอาจารย์นะครับ
  • ประจักร
    สวัสดีครับท่านไม่รู้ว่าบทความเสร็จหรือยังครับ ผมรอดูอยู่ครับท่าน
    • Onmobile ผู้เขียน
      ใจเย็นๆครับ ถ้าผมเขียนบทความเสร็จแล้ว ผมจะแจ้งเมล์ให้คุณเลยครับ
  • ประจักร
    ขอบพระคุณท่านอาจารย์ครับ รออยู่ครับ
  • ประจักร
    เท่าที่ผมได้หามาไม่มีใครเขียนบทความอ่านแล้วเข้าใจเหมือนท่านเขียนเลยครับ
  • kongkiat
    ทำใมหน้า cart.php ไม่ขึ้นสินค้าให้ มันบอกว่า ไม่มีสินค้า ทั้ง ๆ ที่กดเพิ่มแล้ว (ผมทำไม่เป็นอะคับ แก้ไม่เป็น พึ่งหัดลองศึกษาอยู่ ช่วยบอกจุดผิดทีคับ ขอบคุณคับ)
    • Onmobile ผู้เขียน
      copy code ทุกบรรทัดจากผมเปล่า ครับ?
  • twinmafia
    ขอบคุณมากครับ ได้ความรู้เพิ่มมากเลยครับ
  • EARTHZ
    ขอบคุณครั้บ
  • EARTHZ
    ทำการ drump ใส่ sql ไม่ได้ครั้บ
    • Onmobile ผู้เขียน
      คุณสร้างฐานข้อมูลก่อนแล้วค่อย drump ครับ
  • boy
    ลองทำตามแล้วได้ error แบบนี้อ่ะครับ ไม่ทราบว่าเกิดจากอะไร ?? Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\shopping_cart\order.php on line 24
    • Onmobile ผู้เขียน
      ตรวจสอบ ไฟล์ order.php บรรทัด 22-23 ว่าใส่ถูกต้องตามตัวอย่างเปล่าครับ
  • supercat
    ถ้าทำเป็นระบบสมาชิก ต้องทำยังไงค่ะ
    • Onmobile ผู้เขียน
      ตอนแรกก็ทำตามระบบ นี้ก่อน http://www.itoffside.com/php-workshop-member-system/ พอทำเสร็จก็ เช็คตอนสั่ง order (order.php) หากมี Session สมาชิกก็สามารถสั่งได้แต่ถ้าหากว่าไม่มีให้ Redirect เข้าหน้า login.php ก่อน ครับ ลองศึกษาดูครับ
  • supercat
    แล้ว ใช้ code Shopping cart นี้ได้ใช้มั้ยค่ะ อยากทราบว่า id ที่กำหนดไว้ในตารางทั้ง 3 นี่เป็น primary key ตัวเดียวกันหรือ ป่าวค่ะ หรือ คนละตัวแต่ใช้ชื่อซ้ำกันได้
    • Onmobile ผู้เขียน
      คนละ ตัวครับ primary key ของแต่ละตารางไม่มีส่วนมาเกี่ยวกับตารางอื่นๆ ส่วน การใช้ชื่อซ้ำกัน ผมยังไม่เข้าใจคำถาม
  • Palm
    พี่ครับผมลองทำแล้วหน้าตะกร้าสินค้ามันไม่แสดง ค่าตัวแปรส่งมาอยู่นะครับ
    • Onmobile ผู้เขียน
      มีข้อความ Error อะไรไหมครับ
  • ืnono
    ถ้าอยากเปลี่ยนสีของแถว เปลี่ยนตรงไหนคะ ดูในcss ทั้งสองไฟล์จนตาลายแล้วคะ รบกวนด้วยนะคะ ขอบคุณค่ะ
    • Onmobile ผู้เขียน
      ผมใช้ Css Framework ครับ Bootstrap ถ้าหากคุณต้องการเปลี่ยน สี ดูได้จาก http://getbootstrap.com/css/#tables หรือ ติดตั้ง Add on Firebug แล้วจิ้มดู ว่า Css สีตารางอยู่บรรทัดไหนแล้วค่อยแก้นะครับ ขอบคุณครับ
  • boo
    ถ้าเปลี่ยนสีปุ่มพวกหยิบสินค้าลงตะกร้า ลบทิ้ง ต้องทำยังไงคะ
    • Onmobile ผู้เขียน
      ลองอ่าน http://getbootstrap.com/css/#buttons ครับ หากไม่เข้าใจ ถามใหม่ครับ
  • ืnono
    ตอนนี้แก้สีตารางได้แล้วค่ะ ขอบคุณนะคะ ^^
  • fe
    เวลาเข้าไปดูเว็บผ่านโทรศัพท์แล้วมันไม่อยู่ตรงกลางให้ค่ะ อยู่ชิดขวาหมด แต่ดูในคอมอยู่ตรงกลาง ต้องแก้ยังไงคะ
    • Onmobile ผู้เขียน
      ลองอ่านบทความนี้ ครับ http://getbootstrap.com/css/#responsive-utilities
  • ปัทมา
    Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\shopping_cart\index.php on line 3 มันขึ้นอย่างนี้อ่ะคะ ไม่ทราบว่าต้องแก้ไขยังไงคะ
    • Onmobile ผู้เขียน
      บรรทัด 3 ไฟล์ index.php ทดสอบแก้ require("connect.php"); หากไม่หายให้น้องอัพเกรดเวอร์ชั่น PHP ครับตอนนี้เป็นเวอร์ชั่น 5.4-5.5 แล้วครับ หรือถอน Appserv ลง Xampp แทน
  • wiwadhana
    สุดยอดครับ ขอบคุณครับ....
    • Onmobile ผู้เขียน
      :)
  • pare
    ขอโทษน่ะค่ะรบกวนถามตอนเรากดบันทึกและสั่งซื้อน่ะค่ะมันสั่งซื้อไม่ได้ จะขึ้นข้อความ "สั่งซื้อสินค้าไม่สำเร็จ มีข้อผิดพลาดเกิดขึ้นกรุณาลองใหม่อีกครั้ง" นะค่ะไม่ทราบว่าเป็นเพราะอะไรค่ะ ขอบคุณค่ะ
    • Onmobile ผู้เขียน
      กรอกชื่อ นามสกุล ที่อยู่ให้ครบแล้วลองกดสั่งซื้อใหม่ครับ
      • pare
        ลองแล้วค่ะแต่ก็ยังสั่งซื้อไม่ได้ค่ะ
        • Onmobile ผู้เขียน
          error จากการ query ตอน insert table orders ลองตรวจสอบ code และฐานข้อมูล อีกรอบหากไม่ได้ เดี่ยวผม รีโมทแก้ไขให้ครับ
          • songkiat
            รบกวนแก้ไฟล์ updateorder ที่ fullname ด้วยครับ เพราะ ฟิลด์ในฐานข้อมูล คือ fulltime ทำให้ insert ไม่เข้า เผื่อเพื่อนๆคนอื่นๆ หาจุดแก้ไขไม่เจอ
  • naiaon
    ใช้งานง่ายมากเลยครับระบบนี้ ตอนนี้ผมเอามาใช้งานจริงเลยครับ อยากสอบถามว่า ผมจะเอา PHPMailer โค็ดไปใส่ส่วนไหนของหน้า updateorder.php ครับ พอดีผมไปโหลดโค็ดนี่มาครับผม &lt;?php if ( !defined(&#039;VERSION&#039;) &amp;&amp; !$_POST ) { // this code will eliminate anyone attempting to load this script from the // browser address bar ... allowing that would be a security threat echo &quot;Sorry, cannot process ...."; exit(); } /* PHPMailer-FE SETTINGS - these variables are in order of appearance in PHPMailer-FE, value is default */ /* to use these, uncomment the variable (the double slashes at the front) and add your own settings after the equal sign */ $_POST['recipient'] = 'andy@worxteam.com'; //$_POST['cc'] = 'name1@worxteam.com,name2@worxteam.com'; //$_POST['bcc'] = 'name3@worxteam.com,name4@worxteam.com'; //$_POST['email_bad_array'] = "\r|\n|to:|cc:|bcc:"; $_POST['subject'] = 'Form Submission' . ' from: ' . $_SERVER['HTTP_HOST']; //$_POST['useWorxTuring'] = false; //$_POST['PHPMailerLocation'] = 'class.phpmailer.php'; //$_POST['redirectOnBan'] = 'http://' . $_SERVER['HTTP_HOST']; //$_POST['allowedFileTypes'] = 'doc|docx|xls|xlsx|pdf|jpg|jpeg|png|gif|zip|rar|gz'; //$_POST['replyEmailOnFail'] = '_tpl/replyemailfailed.html'; //$_POST['subjectEmailOnFail'] = 'Email Submission failed'; //$_POST['replyEmailOnSuccess'] = '_tpl/replyemailsuccess.html'; //$_POST['subjectEmailOnSuccess'] = 'Email Submission succeeded'; $_POST['redirectOnFail'] = '_tpl/error.html'; //$_POST['useAsAutoResponder'] = true; // default is false - true disables $recipient receiving form value email //$_POST['attach_local_name'] = '/path/to/document.pdf'; //$_POST['attach_local_type'] = 'application/pdf'; //$_POST['reserved_key_words'] = 'keyword1,keyword2,keyword3'; //$_POST['text_only'] = false; //default is false, set to true to send Text only emails if using class.phpmailer.php /* Variables normally passed in the form - NO DEFAULTS ASSOCIATES WITH THESE, EXAMPLES ONLY */ //$_POST['redirect'] = '_tpl/thankyou.html'; //$_POST['required'] = 'frmFirstname,frmLastname,email'; //$_POST['sort'] = 'alphabetic'; $_POST['print_blank_fields'] = '1'; // or true; //$_POST['title'] = 'Feedback Form Results'; //$_POST['return_link_url'] = 'http://yourdomain.com/main.html'; //$_POST['return_link_title'] = 'Back to Main Page'; //$_POST['missing_fields_redirect'] = 'http://yourdomain.com/error.html'; //$_POST['background'] = 'http://www.yourdomain.com/imgs/image.gif'; //$_POST['bgcolor'] = '#FFFFFF'; //$_POST['text_color'] = '#000000'; //$_POST['link_color'] = '#FF0000'; //$_POST['vlink_color'] = '#0000FF'; //$_POST['alink_color'] = '#0000FF'; //$_POST['flash_sent'] = 'sent=OK'; // USED AS THE RETURN CODE FOR FLASH FORMS //$_POST['fixedFromEmail'] = ''; //'webmaster@thisdomain.com'; //$_POST['fixedFromName'] = ''; //'Webmaster'; ขออภัยทุกท่านด้วยครับ ผมเขียน php ไม่เป็น ขอบคุณทุกท่านที่ตอบครับผม
    • Onmobile ผู้เขียน
      แทรกไว้ในบรรทัดที่ 17 เลย ข้างล่าง if ($meQeury) {
      • naiaon
        ขอบคุณครับ ผมแทรกแบบนี้ครับ ........ if ($meQeury) { require_once'formmail.php'; // ส่งค่าฟอร์ม $order_id = mysql_insert_id(); ........... ผลที่ได้คือเมลเข้า แต่ภาษาดันเป็นต่างดาว ปวดใจจิงๆ ครับ
  • CNTral
    พี่คับถามหน่อยคับ ระบบตะกร้าสินค้า ถ้าจะเปลี่ยนจากที่สินค้าไปด้านให้ สินค้าไปด้านข้างแทนเหมือนหลายๆเว็บทำไงหรอคับ
    • Onmobile ผู้เขียน
      ย้ายไปอยู่ด้านข้างใช้ html+css ครับ
      • CNTral
        ยังไงคับไม่เข้าใจ
        • Onmobile ผู้เขียน
          รูปแบบหน้าจอ ด้านบนด้านข้าง ไม่มีผลเกี่ยวกับ code ครับคุณ copy code ด้านบน มาวางด้าน ข้างโดย ส่วนที่เปลี่ยนคือ html, css ครับ ที่ต้องเปลี่ยน
          • CNTral
            ผมหมายถึงตัวสินค้าอะคับ ให้ไปด้านข้างแทน ให้มันเลียงไปด่านข้าง บัดทัดละ 4 ชิ้น
    • Onmobile ผู้เขียน
      จากตัวอย่างผมใช้ table นะ คุณก็เปลี่ยนไปใช้ Div ครับ โดยใช้ CSS ควบคุมการแสดงผล ลองศึกษา html+css ครับ
  • tee
    มีตัวอย่าง การจ่ายเงิน หรือ การชำระเงินไหมครับ ต่อยอดจากอันนี้
    • Onmobile ผู้เขียน
      ระบบผู้ใช้แจ้งชำระเงิน ยังไม่มีครับ
  • ploy
    พี่ค่ะทำไมรหัสแตกไฟล์ใช้ไม่ด้ายละค่ะ
    • Onmobile ผู้เขียน
      รหัส www.itoffside.com
  • kikza
    ข้อ 2 ไม่เห็นมีให้โหลดอะครับ
    • Onmobile ผู้เขียน
      ด้านล่างบทความครับ
  • mmmmmmmmmae
    ดาวโหลดและคัดลอกโฟล์เดอร์ Bootstrap และโฟล์เดอร์ images มาแล้วค่ะ แต่มันวางไม่ได้ มันเข้ารหัส รหัสคืออะไรค้ะ??
    • Onmobile ผู้เขียน
      www.itoffside.com
  • mmmmmmmmmae
    ทำใมหน้า cart.php ไม่ขึ้นสินค้าให้ มันบอกว่า ไม่มีสินค้า ทั้ง ๆ ที่กดเพิ่มแล้ว (แก้ไม่เป็น พึ่งหัดลองศึกษาอยู่ ช่วยบอกจุดผิดทีค้ะ ขอบคุณค้ะ) ป.ล. ก็อปทุกโค้ดเหมือนทุกบรรทัด มันบอก Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test\cart.php on line 28 อ้ะค้ะ
    • Onmobile ผู้เขียน
      ติดตั้ง xampp แทน Appserv
      • mmmmmmmmmae
        ขอบคุณมากค้าาาาาาาา
  • sabarahay
    จากที่ดูศึกษาเล่นๆอ่านคอมเม้นไปๆมาๆ....ผมนี่อึ้งเลยครับ..admin เว็บนี้ตอบใวมาก ทุกคำถาม..มีคำตอบหมด?..? สุดยอดครับนับถือเลย(ส่วนมากที่อ่านมาจะร้างๆไปหมดและ) อันนี้ค่อนข้างจะปัจจุบันดีน่าสนใจ น่าติดตามมากครับ ^^
    • Onmobile ผู้เขียน
      ขอบคุณครับ ที่ ชมผมจะเก็บไว้พัฒนาและเขียนบทความต่อไปครับ
  • E27FQQ
    ขออนุญาติสอบถามหน่อยครับ พอดีผมได้นำเอา source code ของท่านไปดัดแปลงครับ ให้เข้ากับการทำงานในหน่วยงานของผม เรื่องมันมีมีอยู่ว่า หลังจากที่เราเลือกรายการสินค้า เข้าตะกร้าแล้ว เมื่อเราเข้าไปตรวจสอบในตะกร้า กลายเป็นว่ารายการที่เราเลือกไม่เป็นลำดับก่อนหลังตามที่เลือก ผมได้ตรวจสอบจาก source code แล้วน่าจะมาจากตอนที่ select ข้อมูลมา โดยที่ where in () ครับ ไม่ทราบว่าพอจะมีวิธีแก้ไข ที่จะให้รายการที่เราเลือก เป็นไปตามลำดับตามที่เราเลือกได้มั้ยครับ เพราะเช็คจาก array แล้ว ลำดับก่อน-หลัง ตรงตามที่เลือกครับ แต่หน้าแสดงตะกร้า กลับไม่ตรง...
    • Onmobile ผู้เขียน
      สินค้าที่อยู่ในตะกร้า เรา นำมาจาก database ซึ่ง ระบบนี้ไม่สามารถเรียงตาม ที่ เพิ่มในตะกร้าได้ครับ
  • Aoy
    หน้า Cart มีแจ้งเตือนแบบนี้ แก้ไขยังไงคะ Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\1\cart\cart.php on line 28 ขอบคุณล่วงหน้าค่ะ
    • Onmobile ผู้เขียน
      ติดตั้ง XAMPP แทน Appserv
  • Tour
    $itemCount เอาไว้ทำอะไรหรอครับ ไม่เข้าใจความหมายของตัวนี้
  • TOUR
    ขอถามอีกข้อนะครับ พอดีว่าผมต้องการนำไปประยุกต์ใช้กับงาน โดยที่ผมใช้ appserv เป็นsever แต่จากที่อ่านcomment คือต้องใช้ xampp ด้วยเหตุผลอะไรหรอครับ คำสั่ง? พอมีวิธีที่จะไม่ต้องเปลี่ยนได้ไหมครับ ถ้ายังไงก็ต้องเปลี่ยน งานที่ทำไว้จะมีผลกระทบไหมครับ เช่นคำสั่งเปลี่ยน ต้องเปลี่ยนคำสั่งเดิมไปใช้ xampp ขอบคุณมากครับ
  • Tony
    สุดยอดไปเลยครับ โหลด source code มาปุ๊บ เปลี่ยน user/pass ของ database แล้วก็ใช้งานได้เลย
  • ํYing
    ขอบคุณครับ
  • james
    พี่ครับผมขอถามหน่อยครับ ผมเปลี่ยนฐานข้อมูล(product)สินค้าแล้วพอกดหยิบใส่ตระกร้า ลิ้งหน้าตระกร้าสินค้าของฉัน มันก้อเพิ่ม แต่พอกดเข้าไปดูมันบอก"ไม่มีสินค้าในตะกร้า"อะครับแล้วผมต้องไปแก้ตรงไหนหรอครับ
    • Onmobile ผู้เขียน
      ตรวจสอบ session start ครับ
  • Kittiphum
    การที่จะดึงข้อมูลสั่งซื้อมาโชว์ในหน้าเว็บ ทำไมมันโชว์ทุกรายการเลยครับ ผมต้องทำไงครับ
  • Onmobile ผู้เขียน
    ต้องสร้างระบบสมาชิก แล้วตอนที่ สมาชิกล๊อกอินเข้ามาให้แสดงรายการที่สมาชิกสั่งซื้อแทน
  • สันต์
    อาจารย์ครับ มีโค้ดตัดสต๊อกเพิ่มไหมครับ (ถ้าไม่มีผมรบกวนอาจารย์เขียนให้ดูด้วยครับ)ตอนนี้ผมเพิ่ม ฟิลล์ จำนวนสินค้าใน เทเบิลสินค้าแล้วครับ ขอขอบคุณอาจารย์มากครับ
  • เล็ก
    ถ้าเรา มีสินค้า 100 อยากให้แบ่งเป็นหน้าละ 20 รายการ ต้องแก้ไขเพิ่มเติมตรงไหนครับผม
    • Onmobile ผู้เขียน
      pagination ครับ
      • pp
        อยากทราบเหมือนกันค่ะ รบกวนด้วยนะคะ pagination ต้องทำยังไงค่ะ?
  • เล็ก
    สำหรับคนที่อยาก อัพ product เพิ่ม ให้ทำดังนี้นะครับ 1. สร้าง insertproduct.php มา 1 หน้า 2 สร้าง img-upload.inc มา 1 หน้า ( สร้างหน้าเปล่าๆนี่แหละครับ แล้วเซพเป็น .inc) ขั้นตอนต่อไป นำ code นี้ไว้ใน insertproduct.php แล้วก็saveซะ Untitled Document &lt;form action=&quot;" method="post" enctype="multipart/form-data" name="form1"&gt; Id: Product_code: Product_name: Product_desc: Product_img_name: Product_price: &nbsp; &nbsp; ////////////////////////////////////////////////////////////////////////////////////////////////////// ขั้นตอนต่อมา นำ code นี้ไปไว้ใน img-upload.inc แล้วก็ save เหมือนกัน //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// วางทั้ง 2 หน้านี้ไว้ ใน โฟล์เดอร์เดียวกันกับ index.php นั้นแหละครับ ข้อสำคัญ โฟล์เดอร์ที่ใช้เก็บรูปของท่านต้องตั้งชื่อว่า images นะครับ และที่สำคัญท่านต้องไม่เปลี่ยนแปลง ชื่อ database และตาราง ข้างต้นด้วยนะครับ พอจะอัพสินค้า ก็เรียกหน้า insertproduct.php มาใช้งานครับผม
    • เล็ก
      ข้ออภัย code มันไม่ขึ้นให้ครับ วันหลังจะอัพเป็นไฟล์ให้ก็แล้วกันนะครับ
      • pp
        กำลังจะหาวิธีเพิ่มหน้าสินค้าพอดี ยังไงรบกวนด้วยนะคะ
        • เล็ก
          // // // // // // // Untitled Document // // // // &lt;form action=&quot;" method="post" enctype="multipart/form-data" name="form1"&gt; // // // Id: // // // // Product_code: // // // // Product_name: // // // // Product_desc: // // // // Product_img_name: // // // // // // Product_price: // // // // &nbsp; // // // // // //&nbsp; // // // //อันนี้เอาไว้ใน insertproduct.php ครับ
          • เล็ก
            ผมอัพให้ก็แล้วกัน ทั้งสองตัวครับ ลองไปใช้ดู http://www.drop4shared.com//ad4b77e7 link โหลด
          • CR.nack
            ขอทราบรายละเอียดเรื่องไฟล์ insertproduct ว่าผมต้องเปลี่ยนตรงใหนบ้าง...บอดีลองทำแล้วมัน ERROR
  • mint
    คือว่า พอกดบันทึกการซื้อสินค้า แล้วมันขึ้นว่าเกิดข้อผิดพลาดต้องแก้ครงไหนหรอคะ ?
    • Onmobile ผู้เขียน
      บทความนี้ไม่มีการ insert ครับ error ยังไงลองเอาภาพมาให้ดูหน่อยครับ
  • pp
    อยากทราบว่าถ้าจะสร้างสินค้าเป็นหมวดหมู่ แล้วสร้างเป็นหลายหน้า ต้องเพิ่มหน้ายังไงค่ะ
  • เล็ก
    ไม่ขึ้นเหมือนเดิม
    • Onmobile ผู้เขียน
      คืออะไรไม่ขึ้นเหมือนเดิมครับ
      • เล็ก
        อ้อ โค๊ดเพิ่มสินค้าครับ พอดีเห็นมีหลายคนอยากได้ ผมลองทำแล้วพอใช้ได้เลยเอามาแบ่งให้ครับ
        • เล็ก
          เผอิญว่า ผมโพส เป็น php ในบอร์ดแล้วมันไม่ขึ้นให้ครับ คือมองไม่เห็น เลยทำหน้า php มาให้โหลดไปวางกันเลย ใช้กับโค๊ดที่ท่านทำมาได้ครับเป็นตัวอัพสินค้าเพิ่ม
  • yutt
    mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in มันขึ้นcode แบบนี้อ่ะครับ แก้ยังไงครับ
    • Onmobile ผู้เขียน
      ตรวจสอบคำสั่ง sql ครับ
  • anuwat
    ตอนหยิบสินค้าเราสามารถระบุจำนวนที่มากกว่า 1 ได้ไหมครับ ขอคำแนะนำด้วยครับ
    • Onmobile ผู้เขียน
      ต้องเขียนเพิ่มเติมครับ
  • songpon
    ขอรบกวนถามนะครับพี่ คือผมทำการสั่งเรียบร้อยแล้ว ผมอยากเอารายการที่สั่งมาโชว์ เพื่อที่จะทำเป็นในเสร็จอะครับ ต้องทำยังไง
    • Onmobile ผู้เขียน
      เก็บรายการที่สั่งซื้อไว้ในฐานข้อมูลครับ
  • mee
    พี่ครับ ระบบตะกร้าของพี่ รูปลิงค์ข้างล่าง http://www.itoffside.com/wp-content/uploads/2014/04/shopping-cart-02.jpg แบบว่าช่อง จำนวน เปลี่ยนเป็น ค่าบริการซ่อม พอกรอกราคาลงไป(แต่รายการ)แล้ว กด ปุ่มคำนวณให้แสดง ค่าของช่องค่าบริการ ไปอยู่ในช่อง รวม(บาท) และช่อง รวมทั้งหมด(บาท) ด้วย จะต้องแก้โค๊ดยังไงบ้างหรอครับ รุปตัวอย่างอยู่ข้างล่างนะครับ ถ้าพี่สงสัยช่วยแอดมาเฟส https://www.facebook.com/PTCmea หรือ inbox ก็ได้นะครับ ขอบคุณมากนะครับ https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xfa1/v/t34.0-12/12165670_980560151987856_1942954962_n.jpg?oh=36f747157259beffb72d4a6f3d5864b5&amp;oe=56238BB0&amp;__gda__=1445179411_af76d61e82c25391f65c52890242ede8
    • Onmobile ผู้เขียน
      คำนวณในไฟล์ updatecart.php ครับ
      • mee
        แล้วต้องเพิ่มโค๊ดยังไงบ้างครับ
  • aom
    ตัวอย่าง error "ตอนแรกใช้ได้ เล่นได้ ..รันสั่งของตามปกติ .พอลองสั่งทำดูเล่นๆ ประมาณสัก 10กว่าครั้งได้.. ก็ขึ้นแสดงหน้านี้(ตามภาพ) ไปลบระบบฐานข้อมูลที่สร้างแล้วก็เป็นเหมือนเดิม ลบออกสร้างใหม่ก็เป็นเหมือนเดิมครับ คลิ๊กสั่งสินค้าก็เด้งมาหน้านี้ตลอด ไม่ทราบว่าเป็นเพราะอะไร https://www.facebook.com/339805142780847/photos/a.376177675810260.91063.339805142780847/906170842810938/?type=3&amp;theater
  • popsook
    กดไลค์แล้วไม่เจอลิ๊งซะงั้น อิอิ browser เพี้ยนไปแล้ว :) ขอลิ๊งหน่อยครับ
  • kukik
    แล้วเราจะเก็บข้อมูลที่สั่งซื้อไว้ในตาราง order_detail ได้ยังไงบ้างหรอคะ ชอบตะกร้าสินค้าของพี่มากเลยแต่ทำไม insert ข้อมูลที่สั่งซื้อไม่ได้ก็ไม่รู้ รบกวนด้วยค่ะ
    • Onmobile ผู้เขียน
      เขียนโค๊ดเพิ่ม ที่ไฟล์ order.php ครับให้ insert ข้อมูลเข้าไปโดยข้อมูลเอามากจาก SESSION
      • kukik
        ขอบคุณมากๆค่ะ
  • moo
    ขอสอบถามหน่อยได้ไหมค่ะ ถ้าเราอยากให้สินค้าโชว์ เป็นช่องๆคอลัมภ์ซัก 3อัน ควรทำยังไงอ่ะค่ะ
    • Onmobile ผู้เขียน
      ใช้ css ในการควบคุมหน้าตาเว็บไซต์ครับ
  • Vorawit
    พี่ครับแก้มาสองวันแล้วครับขึ้น Notice: Undefined index: formid in C:\xampp\htdocs\Shop_Gaming_Gear\updateorders.php on line 4 จากปกติโค้ดท้ายสุดที่ header location มันไปที่index มันไม่insert ข้อมูลผมเลยลอง header มาที่ หน้าupdateorders ว่ามันเกิดไรขึ้น มันก้อขึ้นตามด้านบนครับยังไงรบกวนดูทีครับว่ามันเกิดจากอะไร ตัวแปร 'formid' ผมดูทั้งหน้า order และหน้า updateorders ผมมีหมด ยังไงรบกวนช่วยดูทีครับ
    • Onmobile ผู้เขียน
      ตัวแปร formid ไม่มีการประกาศ เลย error ตอนที่เรียกใช้งานตัวแปร ครับในไฟล์ updateorders.php on line 4
      • Vorawit
        แล้วต้องประกาศตรงไหนครับอย่างไร รบกวนช่วยทีครับแล้วจะแก้ยังไงครับติดตรงนี้ครับ
      • Footty
        พี่ครับประกาศยังไงตรงไหนครับมันติดแค่ส่วนเดียวเหมือนกันเบย
  • Vorawit
    พี่ครับผมลองเอา $_SESSION['formid'] = sha1('itoffside.com' . microtime()); ไปใส่ในหน้า updateorders ด้วย เอาไปใส่หลัง SESSION start มันขึ้น E00001!! SESSION ERROR RETRY AGAINT. รบกวนดูให้ทีครับ
  • Vorawit
    รบกวนตอบคำถามทีครับ ผมใส่คอมเม้นพวก If ทั้งหมดหน้า updatecart มันinsert เฉพาะ order_detail คราวนี้ ผมลองใส่if ก่อนวนลูปfor if($meQeury) มันไม่ทำงานเลยครับ เหมือนมันไม่ยอมInsert order รบกวนทีครับตอนนี้ มันInsert ตารางorderไม่ได้ ผมลอง echo ตัวแปร order_name order_addres order_phone มันโชวหมดแต่มันไม่ insert รบกวนตอบทีครับ
    • Onmobile ผู้เขียน
      ดู query insert หน่อยครับ
  • Vorawit
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Shop_Gaming_Gear\cart.php on line 24 SELECT * FROM product WHERE p_id in (,1,2,3,4,5) ผมลองechoดู ปันหาเก่าหายล่ะผมสร้างorder มันต้อง orders มันเปนคำสงวน อัันนี้ มาอีกแล้วครับ อยุ่ดีดีก้อเปน 2หน้าเลยคระบ cart กับ orderมันบอกบรรทัด numrows ครับ รบกวนด้วยครับผมนั่งแก้มาหลายวันแล้ว $meSql = "SELECT * FROM product WHERE p_id in ({$inputItems})"; $meQuery = mysql_query($meSql); $meCount = mysql_num_rows($meQuery);
    • Onmobile ผู้เขียน
      ลองตรวจสอบ {$inputItems} ครับ
  • aut
    ช่วยหน่อยคับพี่มันขึ้นแบบนี้ Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\shopping_cart\updateorder.php:9) in C:\AppServ\www\shopping_cart\updateorder.php on line 42
    • Onmobile ผู้เขียน
      ใช้ php 5.3+
  • goy
    คัดลอกโฟล์เดอร์ Bootstrap และโฟล์เดอร์ images (โหลดตรงไหนคะ)
    • Onmobile ผู้เขียน
      อยู่ในโฟล์เดอร์ทีดาวน์โหลดไปครับ
  • JustinLogo2013
    พี่ครับ อยากถามว่า ถ้าเราจะเอาออกมาเป็นใบเสร็จทำไง?
    • Onmobile ผู้เขียน
      เขียนเพิ่มเติมครับ
  • วิทยา
    แยกประเภทสินค้า ต้องทำอย่างไง ครับ แก้Code หรือ database ครับ
    • Onmobile ผู้เขียน
      ต้องแก้ทั้งสองอย่างครับ :)
  • bee
    อยากได้โค๊ดแบบนี้แต่ง่ายๆค่ะ มีหน้าตารางสินค้าเลือกซื้อ กดหยิบ แล้วไปแสดงข้อมูลอีกหน้าหนึ่งแล้วมีลบข้อมูลที่ไม่ต้องการบางชิ้น ไม่เอาคำนวณค่ะ พอจะช่วยได้ไหมค่ะ
  • มงคล
    พี่ครับ ผมรันตามพี่แต่พอกดหยิบใส่ตระกร้าไป แล้วพอผมไปดูในตระกร้าสินค้าของฉัน มันไม่ขึ้นรายการที่ได้เลือกไปอ่ะครับ ผมต้องแก้โค้ดตรงไหนหรอครับ
    • Onmobile ผู้เขียน
      เช็ค code ตรง updatecart.php เลยครับ
      • มงคล
        ผมเช็คดูหมดแล้วนะครับ ก็เหมือนกับ code ตัวอย่างที่พี่ให้ไว้อ่ะครับ ผมเปลี่ยนหน้า index.php ของพี่เป็น index1.php แค่นั้นอ่ะครับ ผมทำไม่ได้จริงๆครับ &lt;?php session_start(); $itemId = isset($_GET[&#039;itemId&#039;]) ? $_GET[&#039;itemId&#039;] : &quot;&quot;; if ($_POST) { for ($i = 0; $i
        • มงคล
          &lt;?php session_start(); $itemId = isset($_GET[&#039;itemId&#039;]) ? $_GET[&#039;itemId&#039;] : &quot;&quot;; if ($_POST) { for ($i = 0; $i
        • Onmobile ผู้เขียน
          index.php ครับ
  • joo
    พี่ค่ะ ทำไมข้อมูลหนูไม่ลงใน sql &lt;?php session_start(); $formid = isset($_SESSION[&#039;formid&#039;]) ? $_SESSION[&#039;formid&#039;] : &quot;&quot;; if ($formid != $_POST[&#039;formid&#039;]) { echo &quot;E00001!! SESSION ERROR RETRY AGAINT.&quot;; } else { unset($_SESSION[&#039;formid&#039;]); if ($_POST) { require &#039;connect.php&#039;; $buy_name = mysql_real_escape_string($_POST[&#039;buy_name&#039;]); $buy_dep = mysql_real_escape_string($_POST[&#039;buy_dep&#039;]); $buy_tel = mysql_real_escape_string($_POST[&#039;buy_tel&#039;]); $meSql = &quot;INSERT INTO tb_request_detail (req_date,buy_name, buy_dep,buy_tel) VALUES (NOW(),&#039;{$buy_name}&#039;,&#039;{$buy_dep}&#039;,&#039;{$buy_tel}&#039;) &quot;; $meQeury = mysql_query($meSql); $meQeury = mysql_query($meSql); if ($meQeury) { $sup_id = mysql_insert_id(); for ($i = 0; $i
    • Onmobile ผู้เขียน
      ขึ้น error อะไรไหมครับ?
      • joo
        บันทึกลงในฐานข้อมูลไม่ได้ค่ะ บันตรงสินค้าที่เลือกมาจาก cart.php บันทึกลงฐานข้อมูล sql ไม่ได้ค่ะ
  • joo
    ไม่ขึ้นค่ะ ไม่รู้ว่าจะทำยังไงเลยค่ะ ในนี้ดึงผ่าน id แต่หนูอยากรหัสสินค้าค่ะ ไม่รู้ว่าเกี่ยวไหม
    • Onmobile ผู้เขียน
      ไม่เกี่ยวครับ
  • non
    ขอบคุณครับ
  • Aekza25
    ขอโค๊ด dowload หน่อยครับพี่
  • pu
    Dowload ไม่ได้อะคะ
  • POH
    ผมรันแล้วขึ้นแบบนี้อะครับ ลองดูตามโค๊ดแล้วเหมือนหมดทุกอยากยังไม่หาย (ผมได้เปลี่ยนชื่อ DB เป็น shopping นะครับ ไม่รู้เกี่ยวไหม) Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\shopping_cart\index.php on line 93
    • POH
      ผมแก้ไขได้แล้วครับ
      • June
        ขอโทษนะคะ ไม่ทราบว่าแก้ไขอย่างไร เพราะยังแก้ไม่ได้
      • Poppy
        แก้ยังไงครับบอกที
  • warrider
    คือผมลบสินค้าไม่ได้อะครับ มันไม่อยมอัพเดทหน้า cart อะครับ กดปุ่มลบเเล้วพวกออเดอร์ที่สี้งก็ไม่ยอมลบ
  • Ju
    พอกดหยิบใส่ตะกร้าแล้วเปิดดูตะกร้าสินค้าของฉันแล้ว error ดังนี้ค่ะ Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\AppServ\www\shopping_cart\cart.php on line 28
  • win
    พอรันแล้ว ตารางไม่ขึ้นอ่ะครับ แต่รันได้น่ะครับ ตารางหาย
  • นรินทิพย์ เขียวมี
    เกิดปัญหาตอนกดบันทึกการสั่งซื้อแล้ว ขึ้นว่า บันทึกการสั่งซื้อไม่สำเร็จไม่ทราบว่าต้องแก้ไขตรงไหนบ้างคะ ลองเปลี่ยนหมดแล้วไม่สำเร็จสักทีเลยค่ะ
    • นรินทิพย์ เขียวมี
      พี่คะ product_id ไม่รับค่า ต้องทำยังไงคะ
      • Onmobile ผู้เขียน
        หมายความว่ายังไงครับ ?
        • นรินทิพย์ เขียวมี
          พอบันทึกการสั่งซื้อแล้ว ค่าที่รับขึ้นเลข 0 ตลอดเลยค่ะ
  • นรินทิพย์ เขียวมี
    พี่คะ จะดึงรหัสสินค้ามาต้องใช้โค้ดยังไงบ้างคะ ลองเปลี่ยนแล้วยังไม่แสดงค่าในฐานข้อมูลสักทีเลยค่ะ ขึ้รแค่เลข 0
    • นรินทิพย์ เขียวมี
      $meSql = "INSERT INTO orders (order_date, order_fullname, order_address, order_phone) VALUES (NOW(),'{$order_fullname}','{$order_address}','{$order_phone}') "; $meQeury = mysql_query($meSql); if ($meQeury) { $order_id = mysql_insert_id(); for ($i = 0; $i &lt; count($_POST[&#039;qty&#039;]); $i++) { $order_detail_quantity = mysql_real_escape_string($_POST[&#039;qty&#039;][$i]); $order_detail_price = mysql_real_escape_string($_POST[&#039;product_price&#039;][$i]); $product_id = mysql_real_escape_string($_POST[&#039;product_id&#039;][$i]); $lineSql = &quot;INSERT INTO order_details (order_detail_quantity, order_detail_price, product_id, order_id) &quot;; $lineSql .= &quot;VALUES (&quot;; $lineSql .= &quot;&#039;{$order_detail_quantity}&#039;,&quot;; $lineSql .= &quot;&#039;{$order_detail_price}&#039;,&quot;; $lineSql .= &quot;&#039;{$product_id}&#039;,&quot;; $lineSql .= &quot;&#039;{$order_id}&#039;&quot;; $lineSql .= &quot;) &quot;; mysql_query($lineSql); } (เวลาจะเพิ่มโค้ดอะไรลงไปแล้ว จะไม่บันทึกในฐานข้อมูลเลย ต้องแก้ยังไงเหรอคะ)
      • Onmobile ผู้เขียน
        แก้ไขตารางในฐานข้อมูลเป็น auto increment ยังครับ
        • นรินทิพย์ เขียวมี
          แก้ไขได้แล้ว ขอบคุณค่ะ แต่ตอนนี้เพิ่มข้อมูลลงไปแล้วยังไม่บันทึกในฐานข้อมูลต้องแก้ยังไงคะ
  • นรินทิพย์ เขียวมี
    ตอนนี้แก้ไขทั้งหมดได้เรียบร้อยแล้ว ขอบคุณค่ะ
    • PRCN
      แก้ยังไงคะ เป็นแบบนี้เหมือนกัน
  • tonsai
    &lt;?php session_start(); $formid = isset($_SESSION[&#039;formid&#039;]) ? $_SESSION[&#039;formid&#039;] : &quot;&quot;; if ($formid != $_POST[&#039;formid&#039;]) { echo &quot;E00001!! SESSION ERROR RETRY AGAINT.&quot;; } else { unset($_SESSION[&#039;formid&#039;]); if ($_POST) { require &#039;connect.php&#039;; $order_fullname = mysql_real_escape_string($_POST[&#039;order_fullname&#039;]); $order_address = mysql_real_escape_string($_POST[&#039;order_address&#039;]); $order_phone = mysql_real_escape_string($_POST[&#039;order_phone&#039;]); $meSql = &quot;INSERT INTO orders (order_date, order_fullname, order_address, order_bed) VALUES (NOW(),&#039;{$order_fullname}&#039;,&#039;{$order_address}&#039;,&#039;{$order_bed}&#039;) &quot;; $meQeury = mysql_query($meSql); if ($meQeury) { $order_id = mysql_insert_id(); for ($i = 0; $i ไม่สามารถเข้าถึงเว็บไซต์นี้ การเชื่อมต่อได้รับการรีเซ็ตแล้ว มันขึ้นยังงี้อะครับต้องแก้ยังไง
  • tonsai
    คือไม่สามารถกดบันทึกการสั่งซื้อได้อะครับ
  • kittisak
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\AppServ\www\poject\html\cart.php on line 29 Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\AppServ\www\poject\html\index.php on line 96 แก้ตรงไหนครับ
  • Natthaporn
    ช่วยทีค่ะ คัดลอกไฟล์ตาม order.php แล้ว พอแสดงผลแถบเมนูด้านบนไม่สามารถแสดงเป็นภาษาไทยได้คะ แก้ไขยังไงคะ
  • kriangkrai
    รบถวนขอถามหน่อยครับ ระบบที่ให้มานี้ ดัดแปลงใช้ได้ดีมากเลยครับ แต่ผมติดปัญหานิดหน่อยอ่าครับ ตรงส่วนของแถบเมนู css ด้านบนอ่าครับ อยากทราบว่าถ้าจะปรับขยาดให้สั่งลงต้องปรับในส่วนไหนหรอครับ
  • kriang
    อยากได้ code การแก้ไขรายการสั่งซื้อครับเพราะลองดัดแปลงไฟล์ cart.php แล้วทำไม่ได้ครับ
  • Ccap
    สินค้าไม่อยู่ในตะกร้าครับ
    • Onmobile ผู้เขียน
      หมายถึงอะไรเหรอครับ
  • mepoo
    อยากได้ โค๊ด โชว์การสั่งซื้อ ของ admin ครับ ผม งง ทำมาหลายวันไม่ขึ้นเลย
  • REX
    พี่ครับผมเทส รัน แล้วขึ้นแบบนี้อะครับ Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\shopping_cart\index.php on line 93 # รหัสสินค้า ชื่อสินค้า รายละเอียด ราคา ไม่ขึ้นครับ
    • REX
      Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\shopping_cart\order.php on line 24 อันนี้ด้วยครับผม
  • โปรดตอบด้วยเถิดครับ
    $itemIds = $itemIds . $itemId . ","; ทำไมต้องมี "," ด้วยอะครับ ผมไม่เข้าใจจริงว่า หมายความว่าอะไร
    • Onmobile ผู้เขียน
      เป็นการต่อสตริง ถ้ารวมแบบเต็มๆ ก็เป็น item1,item2,item3,item4
  • mepoo
    อยากให้ จำนวนเงินรวม ทั้งหมดไปเซฟไว้ที่ ตาราง order ด้วยควรใส่แบบไหน ครับ
    • mepoo
      ผมเพิ่ม ฟิลล์ Sumprice ขึ้นมานะ
  • cake
    แตกไฟล์ม่ได้ ทำงัยดีค่ะ ใส่รหัสแล้ว ก้แตกไฟล์ม่ได้อ่ะค่ะ
    • Onmobile ผู้เขียน
      www.itoffside.com
  • Ben
    สวัสดีครับผมขอสอบถามหน่อยผม ก๊อปโค๊ดทุกอย่างใส่ ใน โปรเจคผมแล้วแก้แค่ฐานข้อมูล นิดหน่อย หน้า ข้อมูลสินค้ามันโชว์ครับแต่พอเพิ่มสินค้า หน้า cart.php มันก็ยังขึ้น "ไม่มีข้อมูลสินค้า" อยู่ดีครับ ทั้งๆ ที่ก๊อปตามทุกอย่างแล้ว
    • Onmobile ผู้เขียน
      คุณใช้ php เวอร์ชั่นอะไรครับ
      • kinny
        เป็นเหมือนกันครับ "ไม่มีสินค้าอยู่ในตะกร้า" Warning: line 28 (file cart.php) และหน้าอื่นไม่สามารถแสดงได้ ยกเว้นหน้าเพิ่มสินค้า import project และ database จากไฟล์ที่ให้มาด้วยครับ version php ผมลองเปลี่ยนทุก verion แล้วครับ ช่วยด้วยครับ
        • Onmobile ผู้เขียน
          ผมใช้ php 5.4+ ในการเขียนครับ ถ้าไม่ได้ ส่ง ID:/PASS Teamviewer มาครับ
  • Tanachok Luevanichakul
    ขอโทษนะครับ ไม่ทราบว่าใน updatecart.php ถ้าจะเตือนว่าสินค้า session [qty] เกินมากกว่าใน ฐานข้อมูล พอมีวิธีมั้ยครับที่ทำโค๊ดหยุดการเพิ่มสินค้าลงในตะกร้าแล้วย้อนกลับไปหน้า product เพื่อเตือนว่า ได้เลือกสินค้าเกินใน stock อะครับ :( ผมพยายามลองทำหลายๆรอบก็ไม่ได้ผลเลย พอมีแนวทางมั้ยครับพี่
    • Onmobile ผู้เขียน
      แนวทาง คือ 1. ดึงข้อมูล stock จากฐานข้อมูลมาก่อน (ต้องสร้างฐานข้อมูลเก็บจำนวนคงเหลือ) 2. ในไฟล์ updatecart.php ให้ตรวจสอบค่า qty ในการหยิบตะกร้าเทียบกับจำนวนคงเหลือที่ดึงจากฐานข้อมูล
  • K.Smite
    ขึ้นแบบนี้แก้ไข ไงครับ ตอนนี้ใช้ XAMPP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\PHP2\connect.php:13 Stack trace: #0 C:\xampp\htdocs\PHP2\index.php(3): require() #1 {main} thrown in C:\xampp\htdocs\PHP2\connect.php on line 13
    • Onmobile ผู้เขียน
      ใช้ PHP เวอร์ชั่นอะไรครับ
      • K.Smite
        ใช้ Codelobster อะครับ
        • Onmobile ผู้เขียน
          อันนั้นคือ editor ครับ
          • K.Smite
            ตอนนี้ใช้ Codelobster + XAMPP ลองโหลดที่คุณแปะลิ้งไว้ และ ผมก้ ใส่ ดาต้าเบส ลง php แล้ว ถ้าสมมุติ ผมอยากรันที่คุณทำไว้ ผมต้องทำยังไงบ้างครับ
          • K.Smite
            *php = http://localhost/phpmyadmin/
          • K.Smite
            *php = http://localhost/phpmyadmin/
          • K.Smite
            Web server PHP version: 7.1.1 ******************** phpMyAdmin Version information: 4.6.5.2
            • Onmobile ผู้เขียน
              เปลี่ยน PHP version เป็น 5.4+
  • kinny
    ไฟล์ cart.php Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\wacth_project\cart.php on line 28 ไม่สามารถแสดงผลได้ครับ
    • Onmobile ผู้เขียน
      sql น่าจะผิดนะครับ
      • Jack
        ผมก็เป็นครับ แก้ไขอย่างไรครับ
  • PRCN
    http://localhost/project/index1.php?a=orderfail สั่งซื้อสินค้าไม่สำเร็จ มีข้อผิดพลาดเกิดขึ้นกรุณาลองใหม่อีกครั้ง เข้าloop order fail ตลอดเลยคะ ทำไงดี งงมากเลย
  • กนกพร
    http://localhost/MISSUE/updateorder.php พี่คะพอบันทึกข้อมูลมันขึ้นบบนี้อะคะ
  • ati
    สวัสดีค่ะ SELECT * FROM `products`แล้วมันไม่โชว์ตารางอะค่ะต้องทำยังไง คือ connect ผ่านแล้วต่อพอ select เทเบิลไม่ผ่านซะงั้นงงมากเลยคะ $aVar = mysqli_connect($cfHost, $cfUser, $cfPassword) ); $sql= "SELECT * FROM `products`"; $meQuery = mysqli_query($aVar,$sql) or die ("Error");;
  • pt
    โค๊ต error A non-numeric value encountered ตอนกดลบสินค้า ติดที่บันทัดนี้ที่ ****** if(isset($_SESSION['qty'])){ $meQty = 0; foreach($_SESSION['qty'] as $meItem){ $meQty = $meQty +$meItem; ******** } }else{ $meQty=0; } ?&gt;
  • Poppy
    ผมลองเอาข้อมูลทั้งหมดมาสร้างแล้วลองทดสอบ หน้าแรกสินค้าไม่ขึ้นแล้วเออเร่อขึ้น mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\shopping_cart\index.php on line 93 พอจะแนะนำได้มั้งไหมครับ
    • Onmobile ผู้เขียน
      น่าจะ sql ผิดนะครับ
  • Jaruphong สนุ้ก
    ผมมือใหม่เจอข้อผิดพลาดครับ Fatal error: Uncaught Error: Class 'database' not found in C:\xampp\htdocs\ecproduct\application\back\user\index.php:6 Stack trace: #0 {main} thrown in C:\xampp\htdocs\ecproduct\application\back\user\index.php on line 6 ตัวแปรนี้ครับ $db = new database();
    • Onmobile ผู้เขียน
      แปลว่ายังไม่ได้ include file database.php มาครับ
  • kanokwan
    เวลาลบสินค้าในหน้า cart.php สินค้าถูกลบ แต่ขึ้นตามนี้ค่ะ Warning: A non-numeric value encountered in C:\xampp\htdocs\herbkhaokit\html\cart.php on line 12
  • dee
    ผมต้องการเพิ่มสินค้าไปอีก 30 อย่างคับ แต่เพิ่มไม่ได้ เพิ่มใน database แล้วอ่าคับ เพิ่มได้แค่ 3 ชิ้นแรก ไม่ทราบว่าต้องใช้โค๊ดอะไรคับ
  • มอส
    มีสอนระบบชำระเงินมั้ยครับ ทำโปรเจคจบครับ พลีส TT
  • yoottana prapbuntarik
    $action = isset($_GET['a'])? $_GET['a']:''; ทำไมถึง $_GET['a'] ครับขอโทษด้วยนะครับพอดีมือใหม่ แล้วก็ขอบคุณมากครับ $_GET นี่ใช้ Query String ใช่ไหมฮะ ?id
    • Onmobile ผู้เขียน
      $_GET คือตัวแปร Global ครับ ใช้ในการรับค่าตัวแปรจาก URL หรือ form method get เป็นต้น
  • กีตา
    เวลาบันทึกการสั่งซื้อสีนค้าใน order.php แล้วจะให้มันลดจำนวนสีนค้าในตาราง prodcuts แล้วให้แสดงจำนวนสีนค้าคงเหลือในหน้า index.php ต้องทำอย่างไง ครับพี ขอบคุณครับ
    • Onmobile ผู้เขียน
      ทำตาม concept นี้ได้ครับ - ตาราง products เพิ่มฟิล์ด quantity เพื่อเก็บยอดคงเหลือ - ตอนสั่งซื้อให้ update ตาราง products ให้ลดจำนวน quantity ตามจำนวนที่สั่งซื้อ - ในหน้า index แสดงยอด quantity
      • กีตา
        ครับผม พี่ครับ ผม ขอโค้ด update ตาราง products ให้ลดจำนวน quantity ตามจำนวนที่สั่งซื้อ ได้ไหมครับ คือผมทำมาหลายวันไม่ได้เลย อีอีอีอีอี
  • E
    24 : $meQuery = mysql_query($meSql); (Run) Warning: mysql_num_rows() expects parameter 1 to be resource, null given in D:\AppServ\www\rimkhong7\cart.php on line 28 ตอนแรกได้ปกติไปๆมาเป็นแบบนี้เลยทั้งที่ยังไม่ได้เปลี้ยนอะไรเลย ช่วนหน่อยครับ
    • Onmobile ผู้เขียน
      query ที่ได้มาหรือตัวแปร บางอย่างเป็นค่าว่างนะครับ ดูตาม error ได้ครับ D:\AppServ\www\rimkhong7\cart.php on line 28
  • Nutty
    ใช้กับ php เวอร์ชั่น 7 ได้ไหมครับ
    • Onmobile ผู้เขียน
      ต้องแก้ไข ฟังก์ชั่น mysql_xxx เป็น mysqli_xxx ครับ
  • Neungzii
    admin ครับผมปรับ mysql_xxx เป็น mysqli_xxx Error เพียบเลยครับต้องแก้ตรงไหนอีกไหมครับ tools vscode ครับ รันผ่าน xampp ครับ
    • Onmobile ผู้เขียน
      ขอดูรูปภาพหน่อยครับ
  • thamonwan
    อยากสอบถามว่า หนูเอาโค้ดของพี่ไปใส่แล้ว สามารถรันและเก็บข้อมูลได้ปกติ แต่พอเอาโค้ดไปใส่ในโปรเจค มันไม่สามารถ updateorder ของตาราง order_details ได้ แต่ตาราง orders เก็บข้อมูลลงไปได้คะ
    • ornjira
      ขอดูโค้ดลบหน่อยได้มั้ยค่ะ พอดีของเราทำไม่ได้อ่ะ
  • ornjira
    admin ค่ะ ทำไมโคดลบใช้ไม่ได้ค่ะ เวลาลบแล้วข้อมูลที่เราลบมันไม่ยอมหาย มันหายไปแค่ช่องจำนวนค่ะ
    • Onmobile ผู้เขียน
      อยู่ในเนื้อหาข้อที่ 6 ครับ removecart.php
  • gethigh
    สอบถามค่ะ ทำไงให้ order_detail_price บอกราคารวมที่ * จำนวนสินค้าแล้วอะค่ะ มันบอกเป็นราคา product แทนค่ะ
    • Onmobile ผู้เขียน
      อืม ตอนบันทึก ราคาก็ คูณกับจำนวน แล้วนะครับ
  • Iceza
    ดาวโหลดยังไงครับ
    • Onmobile ผู้เขียน
      กด like ที่เพจครับ แล้วจะมีลิงค์แสดง
  • App Doing
    Warning: A non-numeric value encountered in C:\xampp\htdocs\shopping_cart\cart.php on line 10 เปนหลังจากกดลบสินค้าครับ
  • pizza
    ขอสอบถามหนอยคับจากหน้า C:\xampp\htdocs\shopping_cart\cart.php $order_detail_quantity = mysql_real_escape_string($_POST['qty'][$i]); ถึงต้องใส่ตัวแปร$iด้วยคับแล้วมีไว้ทำไร
    • Onmobile ผู้เขียน
      หมายถึงการเข้าถึง key ของ array ว่าอยู่ที่ลำดับเท่าไหร
  • กรรณิการ์
    ถ้าอยากเปลี่ยนรูปสินค้า ต้องไปแก้ไขตรงไหนหรอค่ะ
    • Onmobile ผู้เขียน
      เปลี่ยนหลังบ้านได้ครับ
  • suwijuk
    Warning: A non-numeric value encountered in C:\xampp\htdocs\shopcarttest\cart.php on line 11 ขอสอบถามครับมันขึ้นแบบนี้ตอนลบสินค้าครับ พอดีผมถูกใจแล้วลิ้งไม่ขึ้นให้ดาวน์โหลดด้วย
    • Onmobile ผู้เขียน
      เดี่ยวตรวจสอบให้ครับ
  • Atcharathep
    Warning: A non-numeric value encountered in C:\xampp\htdocs\project\backend\sell.php on line 14 ขึ้นแบบนี้เหมือนกันกับด้านบนเลยครับ ตอนลบสินค้าในตะกร้าก็ขึ้นแบบนี้อะครับ แก้ยังไงหรอครับ error ตรงส่วนนี้อะครับ $meQty = $meQty + $meItem;
    • Onmobile ผู้เขียน
      แก้ไขเป็น <code> $meQty = (is_numeric($meQty) ? $meQty : 0) + (is_numeric($meItem) ? $meItem : 0); </code>
  • puset
    ทำไมของผมตอนเพิ่ม sql มันขึ้นงี้อะครับ https://www.img.in.th/images/9b3dcec95914c5edc571929d650380c1.png
    • Onmobile ผู้เขียน
      สร้าง database มาก่อนแล้ว คลิก import ครับ
  • BMALC
    *updatecart.php &lt;?php session_start(); $itemId = isset($_GET[&#039;itemId&#039;]) ? $_GET[&#039;itemId&#039;] : &quot;&quot;; if ($_POST) { for ($i = 0; $i &lt; count($_POST[&#039;qty&#039;]); $i++) { $key = $_POST[&#039;arr_key_&#039; . $i]; $_SESSION[&#039;qty&#039;][$key] = $_POST[&#039;qty&#039;][$i]; header(&#039;location:cart.php&#039;); } } else { if (!isset($_SESSION[&#039;cart&#039;])) { $_SESSION[&#039;cart&#039;] = array(); $_SESSION[&#039;qty&#039;][] = array(); } if (in_array($itemId, $_SESSION[&#039;cart&#039;])) { $key = array_search($itemId, $_SESSION[&#039;cart&#039;]); $_SESSION[&#039;qty&#039;][$key] = $_SESSION[&#039;qty&#039;][$key] + 1; header(&#039;location:index.php?a=exists&#039;); } else { array_push($_SESSION[&#039;cart&#039;], $itemId); $key = array_search($itemId, $_SESSION[&#039;cart&#039;]); $_SESSION[&#039;qty&#039;][$key] = 1; header(&#039;location:index.php?a=add&#039;); } } *อยากสอบถามว่าถ้า limit ให้ใส่ตะกร้าได้แค่ 5 item ทำยังไงครับ ขอบคุณครับ^^
    • Onmobile ผู้เขียน
      เช็ค if($_SESSION['qty'] < 5) { //code } else { // cannot add cart }
  • Roberto
    สวัสดีสวัสดีตอนเช้าขอโทษฉันได้รับข้อผิดพลาดเมื่อแตกไฟล์ file.rar ถามรหัสผ่าน
    • Onmobile ผู้เขียน
      password is "www.itoffside.com" you must type again.
  • Thanjira Prewkrathok
    2. คัดลอกโฟล์เดอร์ Bootstrap และโฟล์เดอร์ images ไปวางในโฟล์เดอร์โปรเจ็ค เช่น www/shopping_cart/ เป็นต้น โดยสามารถดาวน์โหลดไฟล์ได้จากด้านล่างบทความเรื่องนี้ (ท้ายบทความ) ในส่วนนี้ไฟล์อยู่ตรงไหนคะ
  • Dyne
    ถ้าต้องการระบุจำนวนก่อนเลือกลงตะกร้าทำอย่างไรคะ
  • min
    สวัสดีครับ ผมติด error ครับ พอดีจะเอาไปต่อยอดโปรเจ็คจบ error Fatal error: Uncaught TypeError: mysqli_num_rows(): Argument #1 ($result) must be of type mysqli_result, bool given in C:\xampp\htdocs\cart1\cart.php:27 Stack trace: #0 C:\xampp\htdocs\cart1\cart.php(27): mysqli_num_rows(false) #1 {main} thrown in C:\xampp\htdocs\cart1\cart.php on line 27
    • Onmobile ผู้เขียน
      sql error ครับ ลองดูคำสั่ง sql ให้ดีครับ หรือไม่ลอง debug sql แล้วเอาไปรัน ใน phpmyadmin ดูก่อนนะครับ
  • siri
    ไม่มีลิงค์ให้โหลดไป test หรอครับ
  • rizann
    ตอบข้ามปีกันเลย ทีเดียว
  • wave
    LInk ที่ให้ Download อยู่ไหนครับ พอดีไม่เห็นเลย บอกว่า Link ที่ให้ Download อยู่ด้านล่าง แต่มองไปแล้วไม่เห็นครับ ช่วยนำ LINK ม่าให้หน่อยครับ
  • tanapol
    Dowload file ได้ที่ไหนครับ ผมก็ไม่เห็น Link Download เหมือนกัน
  • Nat
    อันนี้มันเป็นอะไรหรอครับ -- phpMyAdmin SQL Dump -- version 4.9.5 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1:3306 -- Generation Time: 14 ธ.ค. 2021 เมื่อ 11:51 AM -- เวอร์ชันของเซิร์ฟเวอร์: 10.4.19-MariaDB-cll-lve -- PHP Version: 7.2.34 SET SQL_MODE = “NO_AUTO_VALUE_ON_ZERO” MySQL said: Documentation #1231 - Variable 'sql_mode' can't be set to the value of '“NO_AUTO_VALUE_ON_ZERO”'
    • Onmobile ผู้เขียน
      ดูรูปภาพหน่อยครับ
  • jakkaphan
    อยากสอบถามเรื่องการดาวโหลดครับสามารถดาวโหลดได้อย่างไร
    • Onmobile ผู้เขียน
      ไม่ต้องดาวน์โหลดครับ เพราะเป็นสคริป สามารถ copy นำไปใช้ได้เลยตรงหน้าเว็บ

แสดงความเห็น

ไม่แสดงบนหน้าเว็บ

บทความที่เกี่ยวข้อง