You are on page 1of 9

phn 1 ti trnh by phn hin th thng tin sch c trong c s d liu, chu trnh thc

thi ca vic thm mt quyn sch vo gi hng. V c ch qun l gi hng ca chng ta


nh th no. Tip tc vi phn 2, ti s trnh by cch qun l gi hng nh chnh sa mn
hng, lit k hng ha trong gi hng v xa b tng mn hng hay c gi hng nh th
no. c th hiu c phn 2.
Cc bn vui lng xem li bi 19: Vit ng dng to gi hng shopping cart phn 1.
Phn 2: Xy dng h thng qun l gi hng.
Sau khi thm mt mn hng, ti gi hng ta cng cn phi x l hin th cc mn
hng c trong gi. V nh phng php phn 1, chng ta tm lu m sch trong
session. (xem li Bi 7: Khi nim c bn v Cookie v session trong PHP) . Vy trang
gi hng ny, ta s khi to session v s dng vng lp duyt mng foreach lp ton b
m sch ang lu trong session. Tip tc, ta li chuyn chng sang dng chui bng hm
implode().
<?php
session_start();
f oreach($_SESSION['cart'] as $
{
$item[]=$key;

1
2
3
4
5
6
7
8
<?php
session_start();
foreach($_SESSION['cart'] as $key=>$value)
{
$item[]=$key;
}
$str=implode(",",$item);
?>
Gi s lc ny chui ca chng ta s c dng 7,8,9. Cng vic tip theo l kt ni CSDL
lit k cc sn phm c m nh trn. (xem li bi 10: kt hp php & mysql trong ng
dng website). Thay v s dng select * from tn_bng where id= ??. Th ti u hn, ti
s s dng php in trong SQL. Lc ny cu truy vn s tng ng:
<?php
$sql="select * f rom books wher
$query=mysql_query($sql);
while($row=mysql_f etch_array
?>

1
2
3
4
5
<?php
$sql="select * from books where id in ('$str') order by id desc";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query))
?>
Tip tc, ta lp ton b thng tin sch bao gm tn, tc gi, gi tin v c s lng m ta
lu trong session l $_SESSION['cart'][ 'ID_Mn_Hng']. ID_Mn_hng chnh l
thng tin ta lp ra t CSDL ($row[id]).
Bn cnh ti phn s lng, ta s a gi tr lu session ra textbox (v ti gi hng,
ngi dng c php iu chnh s lng, nn lc ny ta cn to textbox cho h iu
chnh). V lp ton b cc quyn sch nn ti tn tn ca textbox s lng ta cng cn
truyn id nhn bit s lng thuc ID ca quyn sch no.
<?php
echo
"<p align='right'>So Luong: <inp
name='qty[$row[id]]' size='5' va
/> - ";

1
2
3
<?php
echo "<p align='right'>So Luong: <input type='text' name='qty[$row[id]]' size='5'
value='{$_SESSION['cart'][$row[id]]}' /> - ";
?>
Chng ta cng cho ngi dng c php xa 1 mn hng no ra khi gi hng ca h.
Bng cch truyn m quyn sch ca tng quyn vo lin kt delcart.php.
<?php
echo "<a href ='delcart.php?prod
?>

1
2
3
<?php
echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach Nay</a></p>";
?>
Ti y, ta cng cn tnh lun gi tin ca tng quyn sch tng ng vi s lng m h
chn. Nh vy, s lng l phn ta lu session, cn gi tin l phn ta ly ra t CSDL
ng vi mng $row ($row['price']).
<?php
echo
"<p align='right'> Gia tien cho m
number_f ormat($_SESSION['car
VND</p>";

1
2
3
<?php
echo "<p align='right'> Gia tien cho mon hang: ".
number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>";
?>
Sau cng, ta cn tnh tng tin ca ton b sn phm c trong gi hng. Bng cch cng
dn tng gi tin ca tng mn.
<?php
$total+=$_SESSION['cart'][$row
?>

1
2
3
<?php
$total+=$_SESSION['cart'][$row[id]]*$row[price];
?>
Phn cn li, l chng ta hin th gi tin vi ng nh dng VND ca Vit Nam.
<?php
echo "<b>Tong tien cho cac mo
?>

1
2
3
<?php
echo "<b>Tong tien cho cac mon hang: <font color='red'>". number_format($total,3)."
VND</font></b>";
?>
ng thi, ta cng to nt cho php ngi dng cp nht. V cho php ngi dng xa
ton b gi hng.
<?php
echo
"<input type='submit' name='sub
/>";
echo "<div class='pro' align='ce

1
2
3
4
5
<?php
echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang' />";
echo "<div class='pro' align='center'>";
echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a
href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>";
?>
Nh vy, code y s l:
<?php
echo
"<f orm action='cart.php' method
f oreach($_SESSION['cart'] as $
{

1
2
3
4
5
6
<?php
echo "<form action='cart.php' method='post'>";
foreach($_SESSION['cart'] as $key=>$value)
{
$item[]=$key;
}
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$str=implode(",",$item);
$connect=mysql_connect("localhost","root","root") or die("Can not connect database");
mysql_select_db("shop",$connect);
$sql="select * from books where id in ($str)";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query))
{
echo "<div class='pro'>";
echo "<h3>$row[title]</h3>";
echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br />";
echo "<p align='right'>So Luong: <input type='text' name='qty[$row[id]]' size='5'
value='{$_SESSION['cart'][$row[id]]}'> - ";
echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach Nay</a></p>";
echo "<p align='right'> Gia tien cho mon hang: ".
number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>";
echo "</div>";
$total+=$_SESSION['cart'][$row[id]]*$row[price];
}
echo "<div class='pro' align='right'>";
echo "<b>Tong tien cho cac mon hang: <font color='red'>". number_format($total,3)."
VND</font></b>";
echo "</div>";
echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang' />";
echo "<div class='pro' align='center'>";
echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a
href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>";
echo "</div>";
?>

Sau khi thit lp thnh cng trang gi hng c bn, lc ny ta c th thm sch mt cch
d dng. Tuy nhin, gi s trong trng hp khng c sch th sao ?. Chng ta vn cha
xt n trng hp gi hng rng th s nh th no. 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.

<?php
$ok=1;
if (isset($_SESSION['cart']))
{
f oreach($_SESSION['cart'] as $

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$ok=1;
if(isset($_SESSION['cart']))
{
foreach($_SESSION['cart'] as $k => $v)
{
if(isset($k))
{
$ok=2;
}
}
}
13
14
15
16
17
if($ok == 2)
{
// code x l gi hng trn.
}
?>
on code ny, ta s dng bin $ok lm bin kim tra, mc nh khi load d liu bin
$ok s bng 1. V khi trong gi hng tn ti sch th chng ta s thay i bin $ok thnh 2.
V gi gi hng nh code trn.
phn trn, ta cng c cp khi ngi dng tin hnh chnh sa s lng tng mn hng
n l qua textbox v nhn cp nhn th h thng s tin hnh chnh sa li thng tin gi
hng. Vy chng ta s x l nh th no cho trng hp .
Nu ch , cc bn s thy dng code cha textbox cho php ngi dng nhp s lng c
mt tham s c bit l name=qty[$row[id]]. Vy tham s ny c dng lm g ?
Tham s ny, ni cho chng ta bit s lng ang hin th l thuc m sn phm no. Vy
khi tin hnh cp nht gi hng ta s kim tra, nu $qty[$row[id]] m c gi tr l 0. Tc
l ngi mun xa b gi hng. Ngc li, ta ch vic cp nht gi hng $id tng ng
vi s lng nhp textbox.
<?php
if (isset($_POST['submit']))
{
f oreach($_POST['qty'] as $key=
{

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if(isset($_POST['submit']))
{
foreach($_POST['qty'] as $key=>$value)
{
if( ($value == 0) and (is_numeric($value)))
{
unset ($_SESSION['cart'][$key]);
}
elseif(($value > 0) and (is_numeric($value)))
{
$_SESSION['cart'][$key]=$value;
}
}
header("location:cart.php");
}
?>
Vic xa mn hng trn ch n gin l hy b session ca id . Vic cp nht s
lng ch n gin l gn s lng ngi nhp (th value trong textbox) vo s lng
ang lu trong session.
Vy code hon chnh ca trang cart.php ny s nh sau:
<?php
session_start();
if (isset($_POST['submit']))
{

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
session_start();
if(isset($_POST['submit']))
{
foreach($_POST['qty'] as $key=>$value)
{
if( ($value == 0) and (is_numeric($value)))
{
unset ($_SESSION['cart'][$key]);
}
elseif(($value > 0) and (is_numeric($value)))
{
$_SESSION['cart'][$key]=$value;
}
}
header("location:cart.php");
}
?>
<html>
<head>
<title>Demo Shopping Cart - Created By My Kenny</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1>Demo Shopping Cart</h1>
<?
$ok=1;
if(isset($_SESSION['cart']))
{
foreach($_SESSION['cart'] as $k => $v)
{
if(isset($k))
{
$ok=2;
}
}
}
if($ok == 2)
{
echo "<form action='cart.php' method='post'>";
foreach($_SESSION['cart'] as $key=>$value)
{
$item[]=$key;
}
$str=implode(",",$item);
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
$connect=mysql_connect("localhost","root","root") or die("Can not connect
database");
mysql_select_db("shop",$connect);
$sql="select * from books where id in ($str)";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query))
{
echo "<div class='pro'>";
echo "<h3>$row[title]</h3>";
echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br />";
echo "<p align='right'>So Luong: <input type='text' name='qty[$row[id]]' size='5'
value='{$_SESSION['cart'][$row[id]]}'> - ";
echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach Nay</a></p>";
echo "<p align='right'> Gia tien cho mon hang: ".
number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>";
echo "</div>";
$total+=$_SESSION['cart'][$row[id]]*$row[price];
}
echo "<div class='pro' align='right'>";
echo "<b>Tong tien cho cac mon hang: <font color='red'>". number_format($total,3)."
VND</font></b>";
echo "</div>";
echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang'>";
echo "<div class='pro' align='center'>";
echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a
href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>";
echo "</div>";
}
else
{
echo "<div class='pro'>";
echo "<p align='center'>Ban khong co mon hang nao trong gio hang<br /><a
href='index.php'>Buy Ebook</a></p>";
echo "</div>";
}
?>
</body>
</html>
V cui cng, khi ngi dng nhn xa ton b gi hng hay ch xa mt mn hng, ta s
gi ti trang delcart.php. Vy trang ny s x l nh th no ?
Ti y, ta c th nhn tham s l: $_GET[productid'];
Tham s ny s l $id m chng truyn qua lin kt. Nu xa ton b gi hng, tc ta s
truyn cho n gi tr bng 0. Lc ny, ta s hy ton b $_SESSION[cart']. Ngc li,
nu l mt $id c th, th ta ch xa mn hng m thi. $_SESSION[cart'][$id].
Code hon chnh ca file delcart.php nh sau:
<?php
session_start();
$cart=$_SESSION['cart'];
$id=$_GET['productid'];
if ($id == 0)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
$cart=$_SESSION['cart'];
$id=$_GET['productid'];
if($id == 0)
{
unset($_SESSION['cart']);
}
else
{
unset($_SESSION['cart'][$id]);
}
header("location:cart.php");
exit();
?>
Download ton b m ngun ca bi ny ti y.
Nh vy, chng ta hon tt vic xy dng hon chnh mt h thng shopping cart n
gin. Tuy rng, y khng phi l mt bi vit hon chnh trong vic xy dng m
hnh thng mi in t. Nhng qu , phn no gip cc bn hiu v d dng pht trin
h thng ca mnh c t chc hn.

You might also like