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 $ {
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.