You are on page 1of 5

Bi 19: Vit ng dng to gi hng - shopping cart - phn 1

nhng bi trc, chng ta cp ti cc ng dng c bn, gn gi vi mi trng


lm vic ca chng ta. Trong bi ny, ti s tip tc hng dn cc bn xy dng h thng
gi hng (shopping cart) mt ng dng ph bin rt thng gp trn cc website cung cp
sn phm hin nay. N gn nh c thay th cho vic mua sm, vic la chn th cng
m chng ta vn thng lm.

Do ni dung v kin thc ca bi ny kh di, nn ti s trnh by bi vit ny 2 phn,
gip cc bn d theo di v d nm bt cc kin thc m ti cp v ng dng.

Phn 1: Xy dng trang hin th sn phm.

u tin, ta khi to bng CSDL n gin nh sau (xem li bi 9: c bn v ngn ng sql v mysql)
1
CREATE TABLE `books` (
2
`id` int(10) unsigned NOT NULL auto_increment,
3
`title` varchar(255) NOT NULL,
4
`author` varchar(100) NOT NULL,
5
`price` int(30) NOT NULL,
6
PRIMARY KEY (`id`)
7 );
trn l mt bng lu thng tin ca cc quyn sch vi tn, tc gi, gi tin ca cc quyn sch.
1
INSERT INTO `books` VALUES (1, 'PHP Can Ban', 'Kenny', 115);
2
INSERT INTO `books` VALUES (2, 'PHP Nang Cao', 'Kenny', 150);
3
INSERT INTO `books` VALUES (3, 'PHP Framework', 'Kenny', 300);
4
INSERT INTO `books` VALUES (4, 'Joomla Can Ban', 'Kenny', 100);
Tip tc ta to file style.css trnh by d liu p mt
01 body{
02
font:12px verdana;
03 }
04 .pro{
05
border:1px solid #999999;
06 margin:5px;
07 padding:5px;
08 width:400px;
09 }
10 a{
11 color:#666666;
12 text-decoration:none;
13 font-weight:900;
14 }
15 #cart{
16
border:1px solid #999999;
17 margin:5px;
18 padding:5px;
19 width:400px;
20 text-align:center;
21 }
Sau khi hon tt vic chun b c s d liu v giao din, tip theo ta s xy dng trang hin th cc mn hng trn
website, cho php ngi s dng la chn sch khi truy cp.
lit k danh sch cc quyn sch ang c trong database, ta cn kt ni CSDL vi thao tc code nh sau. (xem
li bi 10: kt hp php & mysql trong ng dng website).
1 <?php
2 $connect=mysql_connect("localhost","root","root")
3
or die("Can not connect database");
4 mysql_select_db("shop",$connect);
5 ?>
Lc ny, ta c th lit k cc quyn sch bng c php sau:
01 <?php
02 $sql="select * from books order by id desc";
03 $query=mysql_query($sql);
04 if(mysql_num_rows($query) > 0)
05 {
06 while($row=mysql_fetch_array($query))
07 {
08
echo "<div class='pro'>";
09
echo "<h3>$row[title]</h3>";
10
echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br
/>";
11
echo "<p align='right'><a href='addcart.php?item=$row[id]'>Mua Sach
Nay</a></p>";
12
echo "</div>";
13 }
14 }
15 ?>
on code trn thc thi vic hin th sch nu trong CSDL t nht 1 record. V chng s lit k tiu sch, tc gi,
gi tin. y, ti s dng number_format() ly ra 3 s 000 cui, ng vi n v tin t ca Vit Nam l VN.

Sau cng ti to mt lin kt cho php thm quyn sch vo gi hng nu ngi mua cm thy ng . (addcart.php
s l trang thm vo gi hng vi tham s l m ca quyn sch).

Ni n ng dng shopping cart th hin nay, trn th trng tn ti nhiu phng php code. C th s dng chui
lu gi hng, cng c th lu vo CSDL nhp gi hng ca ngi dng v cng c th s dng mng v session lu
thng tin gi hng. Trong khun kh bi vit ny, ti s s dng session v mng lu thng tin gi hng. (xem li Bi
7: Khi nim c bn v Cookie v session trong PHP)

Ti trang addcart.php ti cn khi to mt session v lu m quyn sch vo mt mng. C th l:
$_SESSION['cart'][$id] (xem li bi 6: tng quan v mng v cc hm h tr). Vi $id l m quyn sch m ngi
dng chn trang xem hng ha (index.php). Mc ch chnh ca trang addcart ny l lu tr hoc tnh ton li s
lng sn phm khi m h la chn. (lu l s lng cc mn hng).

Mt vn t ra trong trang ny, l lm th no nhn bit mn hng ngi chn hay cha. Chng hn. Ln
u ti chn mua quyn A, sau ti quay li chn mua tip quyn A. vy trong gi hng phi ghi nhn s lng quyn
A ny l 2. Ch khng th ch lu l 1 c.

Vy, lc ny ta s kim tra xem. Quyn sch m ta va chn c tn ti trong gi hng hay cha. Nu c, ta phi tin
hng ly s lng ang c tng ln 1 n v. Cn nu khng, ta phi gn s lng ca chng l 1.

Code x l hon chnh trang addcart.php ny s nh sau:
01 <?php
02 session_start();
03 $id=$_GET['item'];
04 if(isset($_SESSION['cart'][$id]))
05 {
06
$qty = $_SESSION['cart'][$id] + 1;
07 }
08 else
09 {
10 $qty=1;
11 }
12 $_SESSION['cart'][$id]=$qty;
13 header("location:cart.php");
14 exit();
15 ?>
Nm na, chng ta c th hiu addcart ch n gin l x l s lng hng ha v lu chng dng mng m thi.

Nh vy ti trang mua sch, ta cng cn cho khch hng bit rng trong gi hng ca h hin ang c bao nhiu mn
hng. Hoc nu cha c mn no, ta cng phi bo cho h bit v vic .

Vy khi no th gi hng rng ?. l khi session ca gi hng khng tn ti Id ca quyn sch no. C th,
$_SESSION['cart'][id]. Khi id khng tn ti trong session ny th cng l lc gi hng khng tn ti.

Vy trc khi cho hin th gi hng, ta cn kim tra xem c tn ti id no trong gi hng hay khng. V v id lu dng
mng a chiu, nn ta cn dng vng lp duyt mng foreach.

foreach($_SESSION[cart'] as $k=>$v)

Vi $k c ngha tng ng $id quyn sch v $v tng ng l s lng ca quyn sch trong gi hng. Vy nu
tn ti bin $k, th tc c ngha l trong gi hng c sch. Khi ta s dng mt bin bo hiu rng sch c tn
ti trong gi hng hay khng.
01 <?php
02 $ok=1;
03 if(isset($_SESSION['cart']))
04 {
05
foreach($_SESSION['cart'] as $k=>$v)
06 {
07 if(isset($k))
08 {
09 $ok=2;
10 }
11 }
12 }
13
if ($ok != 2)
14 {
15
echo '<p>Ban khong co mon hang nao trong gio hang</p>';
16
} else {
17
$items = $_SESSION['cart'];
18
echo '<p>Ban dang co <a href="cart.php">'.count($items).' mon hang trong gio
hang</a></p>';
19 }
20 ?>
Trong on code trn ta s dng hm count nhm m xem trong mng hin ti (gi hng) hin ang c bao nhiu
quyn sch. V thc thi vic bo cho ngi dng bit h ang c bao nhiu quyn sch trong gi hng.

Ton b code x l ca trang mua sch (index.php) ny nh sau:
01 <?php
02 session_start();
03 ?>
04 <html>
05 <head>
06 <title>Demo Shopping Cart - Created By My Kenny</title>
07
<link rel="stylesheet" href="style.css" />
08 </head>
09 <body>
10 <h1>Demo Shopping Cart</h1>
11 <div id='cart'>
12 <?php
13 $ok=1;
14 if(isset($_SESSION['cart']))
15 {
16
foreach($_SESSION['cart'] as $k=>$v)
17 {
18 if(isset($v))
19 {
20 $ok=2;
21 }
22 }
23 }
24
if ($ok != 2)
25 {
26
echo '<p>Ban khong co mon hang nao trong gio hang</p>';
27
} else {
28
$items = $_SESSION['cart'];
29
echo '<p>Ban dang co <a href="cart.php">'.count($items).' mon hang trong gio
hang</a></p>';
30 }
31 ?>
32 </div>
33 <?php
34 $connect=mysql_connect("localhost","root","root")
35
or die("Can not connect database");
36 mysql_select_db("shop",$connect);
37 $sql="select * from books order by id desc";
38 $query=mysql_query($sql);
39 if(mysql_num_rows($query) > 0)
40 {
41 while($row=mysql_fetch_array($query))
42 {
43
echo "<div class=pro>";
44
echo "<h3>$row[title]</h3>";
45
echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br
/>";
46
echo "<p align='right'><a href='addcart.php?item=$row[id]'>Mua Sach
Nay</a></p>";
47
echo "</div>";
48 }
49 }
50

51 ?>
52 </body>
53 </html>

Nh vy, trong bi ny chng ta hon tt trang xem sch v trang x l vic thm sn phm mi vo gi hng nh
th no. Mi cc bn c tip bi sau vi tnh nng qun l, sa, xa tng mn hng hoc c gi hng trong h thng.

Xem tip Bi 20: Vit ng dng to gi hng - shopping cart - phn 2

You might also like