Đây là code mình tự viết nên chắc chưa tối ưu, có ý kiến gì thì các bạn comment bên dưới nhé!
Bước 1: connection.php - kết nối cơ sở dữ liệu
PHP:
<?php
$connect = mysql_connect("localhost", "root", "") or
die ("Không kết nói được CSDL");
mysql_select_db ("sanpham");
mysql_query("set names utf8");
?>
Bước 2: index.php - nhận tham số và include ra trang yêu cầu
PHP:
<?php
/**
* WRITER: white.smut
* FORUM: 2mit.org
* CONTACT: jsK.txt@gmail.com
* CODE: cart
*/
session_start();
require('connection.php');
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GIỎ HÀNG</title>
</head>
<body>
<div align='center'>
<h1><a href='http://2mit.org'>DIỄN ĐÀN 2MIT.ORG</a></h1></br>
<?php
if (isset($_GET['menu']))
{
switch($_GET['menu'])
{
case "them":
include("them.php");
break;
case "cart":
include("giohang.php");
break;
case "xoa":
include("xoa.php");
break;
case "thanhtoan":
include("thanhtoan.php");
break;
case "admin":
include("admin.php");
break;
}
}
else
include ('sanpham.php');
?>
</div>
Bước 3: sanpham.php - liệt kê danh sách sản phẩm
PHP:
<table width="900px" border="1px" style="margin-top:6px">
<tr bgcolor="#ccc" align="center">
<td width="100px"><b>Hình ảnh</b></td>
<td width="100px"><b>Tên</b></td>
<td width="100px"><b>Giá</b></td>
<td width="100px"><b>Thêm</b></td>
</tr>
<?php
$sql = "select * from sanpham";
$kq = mysql_query($sql);
while($row=mysql_fetch_assoc($kq))
{
?>
<tr>
<td align="center">
<img src="<?php echo "images/sanpham/".$row['hinhsp']; ?>" width="90px" height="90px" border="0"/>
</td>
<td align="left" >
<?php echo $row['tensp']; ?>
</td>
<td align="left" >
<?php echo $row['giasp']; ?>
</td>
<td align="center">
<a href="?menu=them&id=<?php echo $row['idsp'];?>"> Thêm </a>
</td>
</tr>
<?php
}
Bước 4: them.php - hiển thị sản phẩm để thêm vào giỏ hàng
PHP:
<?php
$id=$_REQUEST['id'];
$query = "SELECT * FROM sanpham WHERE idsp='$id'";
$results = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($results);
extract ($row);
?>
<table width='500' cellpadding = '5'>
<tr>
<?php
echo "<td><img src='images/sanpham/$hinhsp' width=150 height=150/></td>";
echo "<td>";
echo "<b>Tên sản phẩm:</b> $tensp";
echo "<br><br>";
echo "<b>Giá:</b> $giasp";
echo "<br>";
?>
</tr>
<tr>
<td>
<form method="POST" action="">
Số lượng:
<input type="text" name="sl_them" value="1" size="2">
<input type="hidden" name="idsp" value="<?php echo $idsp; ?>">
<input type="hidden" name="tensp" value="<?php echo $tensp; ?>">
<input type="hidden" name="hinhsp" value="<?php echo $hinhsp; ?>">
<input type="hidden" name="giasp" value="<?php echo $giasp; ?>">
<input type="submit" name="them" value="Thêm vào giỏ hàng">
</form>
</td>
</tr>
</table>
<?php
if (isset($_POST['them']))
{
$sl_them=$_POST['sl_them']; // lay so luong san pham
$idsp = $_POST['idsp']; // lay id san pham
$tensp = $_POST['tensp']; // lay ten san pham
$hinhsp = $_POST['hinhsp']; // lay hinh san pham
$giasp = $_POST['giasp']; // lay gia san pham
$sess =session_id(); // lay session id cua nguoi dung
$query = "INSERT INTO giohang (iduser,idsp,sl,tensp,hinhsp,giasp)
VALUES ('$sess','$idsp','$sl_them','$tensp','$hinhsp','$giasp')";
if ($query)
echo "Thêm thành công";
header('location: ?menu=cart');
$results = mysql_query($query)
or die(mysql_error());
}
?>
<a href="?menu=cart">Xem giỏ hàng</a><br>
<a href="index.php">Trang chủ</a>
Bước 5: giohang.php - liệt kê danh sách có trong giỏ hàng
PHP:
<?php
$sessid = session_id();
$tong=0;
?>
<table border="1" align="center" cellpadding="5">
<tr bgcolor='#ccc'>
<td>Số lượng</td>
<td>Hình ảnh</td>
<td>Tên sản phẩm</td>
<td>Giá mỗi sản phẩm</td>
<td>Tổng giá</td>
<td>Thay đổi số lượng</td>
<td>Xóa sản phẩm</td>
<tr>
<?php
$prod = "SELECT * FROM giohang WHERE iduser='$sessid'";
$prod2 = mysql_query($prod);
while($prod3=mysql_fetch_assoc($prod2))
{
echo "<td>";
echo $prod3['sl'];
echo "</td>";
echo "<td>";
echo "<img src='images/sanpham/".$prod3['hinhsp']."' width=30 height=30/></td></a>";
echo "<td>";
echo $prod3['tensp'];
echo "</td>";
echo "<td align='right'>";
echo $prod3['giasp'];
echo "</td>";
echo "<td align='right'>";
echo $gia=$prod3['giasp'] * $prod3['sl'];
echo "</td>";
echo "<td>";
echo "<form action='' method='POST'>
<input tyle='text' name='tdsl' size='2'><br>
<input type='hidden' name='id' value='".$prod3['id']."'>
<input type='submit' name='thaydoi' value='Thay đổi số lượng'>
</form></td>";
echo "<td>";
echo "<a href='?menu=xoa&id=".$prod3['id']."'>Xóa</a>";
echo "</td>";
echo "</tr>";
$tong=$tong+$gia;
}
?>
<?php
if (isset($_POST['thaydoi']))
{
$tdsl=$_POST['tdsl'];
$id=$_POST['id'];
$query = "UPDATE giohang SET sl='$tdsl' WHERE id='$id'";
$results = mysql_query($query)
or die(mysql_error());
echo "Số lượng đã được thay đổi<br>";
echo "<a href='?menu=cart'>Cập nhật lại giỏ hàng</a><br>'";;
}
?>
<tr bgcolor='#ccc'>
<td colspan='4' align='right'>
Tổng hóa đơn:
</td>
<td align='right'>
<?php echo $tong;?>
</td>
<td colspan='2'></td>
</tr>
</table>
<form method="POST" action="?menu=thanhtoan">
<input type='submit' name='thanhtoan' value='THANH TOÁN'>
</form>
</br>
<a href="index.php">Trở về trang chủ</a>
Bước 6: xoa.php - xóa sản phẩm trong giỏ hàng
PHP:
<?php
$key=$_GET["id"];
$xoa="delete from giohang where id='$key'";
$tt=mysql_query($xoa);
if($tt)
{
header('location: ?menu=cart');
}
else "Xóa không thành công!";
?>
Bước 7: thanhtoan.php - gửi đơn hàng đến cơ sở dữ liệu
PHP:
<?php
$sessid = session_id();
?>
<form method="post" action="">
<table>
<tr>
<td colspan="2" bgcolor="#000" height="50px">
<div align="center">
<font size="3" color="#fff">
THÔNG TIN HÓA ĐƠN
</font>
</div>
</td>
</tr>
<tr>
<td>
Họ tên người mua
</td>
<td>
<input type="text" name="name_mua" size="25">
</td>
</tr>
<tr>
<td>
Họ tên người nhận
</td>
<td>
<input type="text" name="name_nhan" size="25">
</td>
</tr>
<tr>
<td>
Địa chỉ người mua
</td>
<td>
<textarea name="add_mua"></textarea>
</td>
</tr>
<tr>
<td>
Địa chỉ người nhận
</td>
<td>
<textarea name="add_nhan"></textarea>
</td>
</tr>
<tr>
<td>
SĐT người mua
</td>
<td>
<input type="text" name="phone_mua" size="25" maxlength="12">
</td>
</tr>
<tr>
<td>
SĐT người nhận
</td>
<td>
<input type="text" name="phone_nhan" size="25" maxlength="12">
</td>
</tr>
<tr>
<td>
Email
</td>
<td>
<input type="text" name="email" size="25">
</td>
</tr>
<tr>
<td colspan="2" height="50px">
<div align="center">
<form action="" method="POST">
<input type="submit" name="gui" value="GỬI ĐƠN HÀNG">
<form>
</div>
</td>
</tr>
</table>
<?php
if (isset($_POST['gui']))
{
$name_mua = $_POST['name_mua'];
$name_nhan = $_POST['name_nhan'];
$add_mua = $_POST['add_mua'];
$add_nhan = $_POST['add_nhan'];
$email = $_POST['email'];
$phone_mua = $_POST['phone_mua'];
$phone_nhan = $_POST['phone_nhan'];
//viết điều kiện yêu cầu nhập tất cả các thông tin
$hoadon = "INSERT INTO hoadon (iduser,name_mua,name_nhan,add_mua,add_nhan,phone_mua,phone_nhan,email) VALUES ('$sessid','$name_mua','$name_nhan','$add_mua','$add_nhan','$phone_mua','$phone_nhan','$email')";
$tb1 = mysql_query($hoadon);
$dathang = "SELECT * FROM giohang WHERE iduser='$sessid'";
$dathang1 = mysql_query($dathang);
while($dathang3=mysql_fetch_assoc($dathang1))
{
$id = $dathang3['id'];
$tensp = $dathang3['tensp'];
$sl = $dathang3['sl'];
$copy = "INSERT INTO dathang (iduser,tensp,sl) values('$sessid','$tensp','$sl')";
$tb2 = mysql_query($copy);
$xoa = "DELETE FROM giohang WHERE id='$id'";
$tb3 = mysql_query($xoa);
}
if (($tb1)&&($tb2)&&($tb3))
{
echo "Đặt hàng thành công";
header('location: ?menu=admin');
}
}
?>
Bước 8: admin.php - xem tất cả các đơn đặt hàng của khách hàng (dành cho admin)
PHP:
<strong>CÁC ĐƠN ĐẶT HÀNG</strong></br></br>
<?php
$sql = "select * from hoadon";
$kq = mysql_query($sql);
while($row=mysql_fetch_assoc($kq))
{
echo "<table border='1' align='center' width='800px'>";
echo "<tr height='50px' bgcolor='#bbb'>";
echo "<td colspan='3' align='center'><strong>NGƯỜI MUA</strong></td>";
echo "<td colspan='3' align='center'><strong>NGƯỜI NHẬN</strong></td>";
echo "</tr>";
echo "<tr>";
echo "<td align='center'><strong>TÊN</strong></td>";
echo "<td align='center'><strong>SĐT</strong></td>";
echo "<td align='center'><strong>ĐỊA CHỈ</strong></td>";
echo "<td align='center'><strong>TÊN</strong></td>";
echo "<td align='center'><strong>SĐT</strong></td>";
echo "<td align='center'><strong>ĐỊA CHỈ</strong></td>";
echo "</tr>";
echo "<tr>";
echo "<td>".$row['name_mua']."</td>";
echo "<td>".$row['phone_mua']."</td>";
echo "<td>".$row['add_mua']."</td>";
echo "<td>".$row['name_nhan']."</td>";
echo "<td>".$row['phone_nhan']."</td>";
echo "<td>".$row['add_nhan']."</td>";
echo "</tr>";
echo "<tr bgcolor='#ccc'>";
echo "<td colspan='3' align='center'><strong>TÊN SẢN PHẨM</strong></td>";
echo "<td colspan='3' align='center'><strong>SỐ LƯỢNG</strong></td>";
echo "</tr>";
$xem = "SELECT * FROM dathang";
$xem1 = mysql_query($xem);
while($xem2=mysql_fetch_assoc($xem1))
{
if ($row['iduser']==$xem2['iduser'])
{
echo "<tr>";
echo "<td colspan='3'>".$xem2['tensp']."</td>";
echo "<td colspan='3'>".$xem2['sl']."</td>";
echo "</tr>";
}
}
echo "</table>";
echo "</br>";
}
?>
NGUYÊN TẮC CODE:
- Code dựa trên id của session khi truy cập vào trang web, biến $sessid sẽ lưu lại id và được gửi đến csdl.
- Khi thêm sản phẩm vào giỏ hàng, $sessid sẽ đi kèm với thông tin sản phẩm để lưu vào giohang trong csdl.
- Khi đã liệt kê đủ các sản phẩm trong giohang, thì chuyển sang trang thanhtoan.php, ở trang này lưu các tên và số lượng các sản phẩm kèm theo $sessid vào dathang trong csdl, và xóa các trường có cùng 1 $sessid trong giohang, đồng thời gửi toàn bộ thông tin của người mua tới hoadon trong csdl.
- Liệt kê các đơn đặt hàng được lấy thông tin từ hoadon và dathang trong csdl.
Các bạn download code về chỉnh sửa nhé!
Mọi thắc mắc bạn có thể comment phía dưới hoặc email cho mình: jsK.txt@gmail.com
Chúc các bạn thành công!