Bài giảng PHP

Tóm tắt Bài giảng PHP: ...ó thể có where hoặc không) LIMIT vị trí bắt đầu, số record muốn lấy ra Ví dụ: mysql> select user_id,username from user order by username ASC limit 0,10 ; 9- Cập nhật dữ liệu trong bảng: Cú pháp: Update tên_bảng set tên_cột=Giá trị mới WHERE (điều kiện). Nếu không có ràng buộc điều...ải ai vào chỉnh sửa cũng đều sửa cả thông tin username, password, level. Có khi họ chỉ sửa mỗi level hoặc có khi họ chỉ sửa mỗi password. Vì thế ta phải xét các trường hợp để giải quyết. Trướng hợp 1: Người dùng chỉ chỉnh sửa username, level mà không chỉnh sửa password. Khi đó username, leve...er where qid='$qid' order by aid"; 22 $query2=mysql_query($sql2); 23 if(mysql_num_rows($query2) > 0) 24 { 25 while($row2=mysql_fetch_array($query2)){ 26 echo "$row2[atitle]<br />"; 27 } 28 } 29 echo ""; 30 echo "Xem Ket Qua"; 31 echo ""; 32 } 33 ?> C- Xây d...

pdf101 trang | Chia sẻ: havih72 | Lượt xem: 101 | Lượt tải: 0download
Nội dung tài liệu Bài giảng PHP, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ợc điều này, ta cần 
kết nối CSDL với cú pháp sau: (xem lại bài 10: kết hợp php & mysql trong ứng dụng 
website). 
1 <?php 
2 
$conn=mysql_connect("localhost","root","root") or die("can't connect your 
database"); 
3 mysql_select_db("images",$conn); 
4 ?> 
Như vậy mỗi khi upload thành công một hình ảnh, ta phải thêm hình ảnh đó vào CSDL như sau: 
1 <?php 
2 $sql="insert into images(img_url,img_name) values('$url','$name')"; 
3 mysql_query($sql); 
4 ?> 
Sau khi thêm vào CSDL ta cần hiển thị thông tin và hình ảnh vừa upload để cho người dùng biết 
họ đã upload thành công. 
Khi đó ta sử dụng một biến $site để lưu đường dẫn gốc hiển thị trên textbox. 
Vậy hoàn chỉnh code cho file doupload.php này như sau: 
01 <?php 
02 $site=""; 
03 if(isset($_POST['ok_upload'])) 
04 { 
05 $num=$_GET['file']; 
06 echo "Demo Images Script - Copyright by QHOnline.Info"; 
07 
 $conn=mysql_connect("localhost","root","root") or die("can't connect your 
database"); 
08 mysql_select_db("images",$conn); 
09 for($i=0; $i< $num; $i++) 
10 { 
1
1 
 move_uploaded_file($_FILES['img']['tmp_name'][$i],"data/".$_FILES['img'][
'name'][$i]); 
12 $url="data/".$_FILES['img']['name'][$i]; 
13 $name=$_FILES['img']['name'][$i]; 
14 $sql="insert into images(img_url,img_name) values('$url','$name')"; 
15 mysql_query($sql); 
16 echo "Upload Thanh cong file $name"; 
17 echo ""; 
18 
 echo "Images URL: <input type='text' name='link' value='$site/$url' 
size='35' />"; 
19 
20 } 
21 mysql_close($conn); 
22 } 
23 else 
24 { 
25 echo "Vui long chon hinh truoc khi truy cap vao trang nay"; 
26 } 
27 ?> 
Bài 19: Viết ứng dụng tạo giỏ hàng - shopping cart - phần 1 
Ở những bài trước, chúng ta đã đề cập tới các ứng dụng cơ bản, gần gũi 
với môi trường làm việc của chúng ta. Trong bài này, tôi sẽ tiếp tục 
hưỡng dẫn các bạn xây dựng hệ thống giỏ hàng (shopping cart) một ứng 
dụng phổ biến rất thường gặp trên các website cung cấp sản phẩm hiện 
nay. Nó gần như được thay thế cho việc mua sắm, việc lựa chọn thủ công 
mà chúng ta vẫn thường làm. 
Do nội dung và kiến thức của bài này khá dài, nên tôi sẽ trình bày bài viết 
này ở 2 phần, để giúp các bạn dễ theo dõi và dễ nắm bắt các kiến thức mà 
tôi đề cập về ứng dụng. 
Phần 1: Xây dựng trang hiển thị sản phẩm. 
Đầu tiên, ta khởi tạo bảng CSDL đơn giản như sau (xem lại bài 9: cơ bản về ngôn 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 ); 
Ở trên là một bảng lưu thông tin của các quyển sách với tên, tác giả, giá tiền của các quyển sách. 
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); 
Tiếp tục ta tạo file style.css để trình bày dữ liệu đẹp mắt 
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 đã hoàn tất việc chuẩn bị cơ sở dữ liệu và giao diện, tiếp theo ta sẽ xây dựng trang hiển 
thị các món hàng trên website, cho phép người sử dụng lựa chọn sách khi truy cập. 
Để liệt kê danh sách các quyển sách đang có trong database, ta cần kết nối CSDL với thao tác 
code như sau. (xem lại bài 10: kết hợp php & mysql trong ứng dụng website). 
1 <?php 
2 $connect=mysql_connect("localhost","root","root") 
3 or die("Can not connect database"); 
4 mysql_select_db("shop",$connect); 
5 ?> 
Lúc này, ta có thể liệt kê các quyển sách bằng cú pháp 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 ""; 
09 echo "$row[title]"; 
10 
 echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." 
VND"; 
11 
 echo "Mua Sach 
Nay"; 
12 echo ""; 
13 } 
14 } 
15 ?> 
Đoạn code ở trên thực thi việc hiển thị sách nếu trong CSDL ít nhất 1 record. Và chúng sẽ liệt kê 
tiêu đề sách, tác giả, giá tiền. Ở đây, tôi sử dụng number_format() để lấy ra 3 số 000 cuối, ứng 
với đơn vị tiền tệ của Việt Nam là VNĐ. 
Sau cùng tôi tạo một liên kết cho phép thêm quyển sách đó vào giỏ hàng nếu người mua cảm 
thấy ưng ý. (addcart.php sẽ là trang thêm vào giỏ hàng với tham số là mã của quyển sách). 
Nói đến ứng dụng shopping cart thì hiện nay, trên thị trường tồn tại nhiều phương pháp code. Có 
thể sử dụng chuỗi để lưu giỏ hàng, cũng có thể lưu vào CSDL nháp giỏ hàng của người dùng và 
cũng có thể sử dụng mảng và session để lưu thông tin giỏ hàng. Trong khuôn khổ bài viết này, 
tôi sẽ sử dụng session và mảng để lưu thông tin giỏ hàng. (xem lại Bài 7: Khái niệm cơ bản về 
Cookie và session trong PHP) 
Tại trang addcart.php tôi cần khởi tạo một session và lưu mã quyển sách vào một mảng. Cụ thể 
là: $_SESSION['cart'][$id] (xem lại bài 6: tổng quan về mảng về các hàm hỗ trợ). Với $id là 
mã quyển sách mà người dụng đã chọn ở trang xem hàng hóa (index.php). Mục đích chính của 
trang addcart này là lưu trữ hoặc tính toán lại số lượng sản phẩm khi mà họ lựa chọn. (lưu ý là số 
lượng các món hàng). 
Một vấn đề đặt ra trong trang này, là làm thế nào để nhận biết món hàng người đó đã chọn hay 
chưa. Chẳng hạn. Lần đầu tôi chọn mua quyển A, sau đó tôi quay lại chọn mua tiếp quyển A. vậy 
trong giỏ hàng phải ghi nhận số lượng quyền A này là 2. Chứ không thể chỉ lưu là 1 được. 
Vậy, lúc này ta sẽ kiểm tra xem. Quyển sách mà ta vừa chọn có tồn tại trong giỏ hàng hay chưa. 
Nếu có, ta phải tiến hàng lấy số lượng đang có tăng lên 1 đơn vị. Còn nếu không, ta phải gán số 
lượng của chúng là 1. 
Code xử lý hoàn chỉnh trang addcart.php này 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 ?> 
Nôm na, chúng ta có thể hiểu addcart chỉ đơn giản là xử lý số lượng hàng hóa và lưu chúng ở 
dạng mảng mà thôi. 
Như vậy tại trang mua sách, ta cũng cần cho khách hàng biết rằng trong giỏ hàng của họ hiện 
đang có bao nhiêu món hàng. Hoặc nếu chưa có món nào, ta cũng phải báo cho họ biết về việc 
đó. 
Vậy khi nào thì giỏ hàng rỗng ?. Đó là khi session của giỏ hàng không tồn tại Id của quyển sách 
nào. Cụ thể, $_SESSION['cart'][id]. Khi id không tồn tại trong session này thì cũng là lúc giỏ 
hàng không tồn tại. 
Vậy trước khi cho hiển thị giỏ hàng, ta cần kiểm tra xem có tồn tại id nào trong giỏ hàng hay 
không. Và vì id lưu ở dạng mảng đa chiều, nên ta cần dùng vòng lặp duyệt mảng foreach. 
foreach($_SESSION[‘cart'] as $k=>$v) 
Với $k có ý nghĩa tương đương $id quyển sách và $v tương đương là số lượng của quyển sách 
trong giỏ hàng. Vậy nếu tồn tại biến $k, thì tức có nghĩa là trong giỏ hàng có sách. Khi đó ta sử 
dụng một biến đã để báo hiệu rằng sách có tồn tại trong giỏ hàng hay không. 
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 'Ban khong co mon hang nao trong gio hang'; 
16 } else { 
17 $items = $_SESSION['cart']; 
18 
 echo 'Ban dang co '.count($items).' mon hang trong 
gio hang'; 
19 } 
20 ?> 
Trong đoạn code trên ta sử dụng hàm count nhắm đềm xem trong mảng hiện tại (giỏ hàng) hiện 
đang có bao nhiêu quyển sách. Và thực thi việc báo cho người dùng biết họ đang có bao nhiều 
quyển sách trong giỏ hàng. 
Toàn bộ code xử lý của trang mua sách (index.php) này như sau: 
01 <?php 
02 session_start(); 
03 ?> 
04 
05 
06 Demo Shopping Cart - Created By My Kenny 
07 
08 
09 
10 Demo Shopping Cart 
11 
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 'Ban khong co mon hang nao trong gio hang'; 
27 } else { 
28 $items = $_SESSION['cart']; 
29 
 echo 'Ban dang co '.count($items).' mon hang trong 
gio hang'; 
30 } 
31 ?> 
32 
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 ""; 
44 echo "$row[title]"; 
45 
 echo "Tac Gia: $row[author] - Gia: ".number_format($row[price],3)." 
VND"; 
46 
 echo "Mua Sach 
Nay"; 
47 echo ""; 
48 } 
49 } 
50 
51 ?> 
52 
53 
Như vậy, trong bài này chúng ta đã hoàn tất trang xem sách và trang xử lý việc thêm sản phẩm 
mới vào giỏ hàng như thế nào. Mời các bạn đọc tiếp bài sau với tính năng quản lý, sửa, xóa từng 
món hàng hoặc cả giỏ hàng trong hệ thống. 
Bài 20: Viết ứng dụng tạo giỏ hàng - shopping cart - phần 2 
Ở phần 1 tôi đã trình bày phần hiển thị thông tin sách có trong cơ sở dữ 
liệu, chu trình thực thi của việc thêm một quyển sách vào giỏ hàng. Và cơ 
chế quản lý giỏ hàng của chúng ta như thế nào. Tiếp tục với phần 2, tôi sẽ 
trình bày cách quản lý giỏ hàng như chỉnh sửa món hàng, liệt kê hàng hóa 
trong giỏ hàng và xóa bỏ từng món hàng hay cả giò hàng như thế nào. Để 
có thể hiểu được phần 2. Các bạn vui lòng xem lại bài 19: Viết ứng 
dụng tạo giỏ hàng – shopping cart – phần 1. 
Phần 2: Xây dựng hệ thống quản lý giỏ hàng. 
Sau khi đã thêm một món hàng, tại giỏ hàng ta cũng cần phải xử lý để 
hiển thị các món hàng đã có trong giỏ. Và như phương pháp ở phần 1, chúng ta tạm lưu mã sách 
trong session. (xem lại Bài 7: Khái niệm cơ bản về Cookie và session trong PHP) . Vậy ở 
trang giỏ hàng này, ta sẽ khởi tạo session và sử dụng vòng lặp duyệt mảng foreach để lặp toàn bộ 
mã sách đang lưu trong session. Tiếp tục, ta lại chuyển chúng sang dạng chuỗi bằng hàm 
implode(). 
1 <?php 
2 session_start(); 
3 foreach($_SESSION['cart'] as $key=>$value) 
4 { 
5 $item[]=$key; 
6 } 
7 $str=implode(",",$item); 
8 ?> 
Giả sử lúc này chuỗi của chúng ta sẽ có dạng 7,8,9. Công việc tiếp theo là kết nối CSDL để liệt 
kê các sản phẩm có mã như ở trên. (xem lại bài 10: kết hợp php & mysql trong ứng dụng 
website). Thay vì sử dụng select * from tên_bảng where id= ??. Thì để tối ưu hơn, tôi sẽ sử dụng 
phép in trong SQL. Lúc này câu truy vẫn sẽ tương đương: 
1 <?php 
2 $sql="select * from books where id in ('$str') order by id desc"; 
3 $query=mysql_query($sql); 
4 while($row=mysql_fetch_array($query)) 
5 ?> 
Tiếp tục, ta lặp toàn bộ thông tin sách bao gồm tên, tác giả, giá tiền và cả số lượng mà ta đã lưu 
trong session là $_SESSION['cart'][ 'ID_Món_Hàng']. ID_Món_hàng chính là thông tin ta lặp ra 
từ CSDL ($row[id]). 
Bên cạnh đó tại phần số lượng, ta sẽ đưa giá trị lưu ở session ra textbox (vì tại giỏ hàng, người 
dùng được phép điều chỉnh số lượng, nên lúc này ta cần tạo textbox cho họ điều chỉnh). Vì lặp 
toàn bộ các quyển sách nên tại tên tên của textbox số lượng ta cũng cần truyền id để nhận biết số 
lượng đó thuộc ID của quyển sách nào. 
1 <?php 
2 
echo "So Luong: <input type='text' name='qty[$row[id]]' 
size='5' value='{$_SESSION['cart'][$row[id]]}' /> - "; 
3 ?> 
Chúng ta cũng cho người dùng được phép xóa 1 món hàng nào đó ra khỏi giỏ hàng của họ. Bằng 
cách truyền mã quyển sách của từng quyển vào liên kết delcart.php. 
1 <?php 
2 echo "Xoa Sach Nay"; 
3 ?> 
Tại đây, ta cũng cần tính luôn giá tiền của từng quyển sách tương ứng với số lượng mà họ đã 
chọn. Như vậy, số lượng là phần ta lưu ở session, còn giá tiền là phần ta lấy ra từ CSDL ứng với 
mảng $row ($row['price']). 
1 <?php 
2 
echo " Gia tien cho mon hang: ". 
number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND"; 
3 ?> 
Sau cùng, ta cần tính tổng tiền của toàn bộ sản phẩm có trong giỏ hàng. Bằng cách cộng dồn tổng 
giá tiền của từng món. 
1 <?php 
2 $total+=$_SESSION['cart'][$row[id]]*$row[price]; 
3 ?> 
Phần còn lại, là chúng ta hiển thị giá tiền với đúng định dạng VND của Việt Nam. 
1 <?php 
2 
echo "Tong tien cho cac mon hang: ". 
number_format($total,3)." VND"; 
3 ?> 
Đồng thời, ta cũng tạo nút cho phép người dùng cập nhật. Và cho phép người dúng xóa toàn bộ 
giỏ hàng. 
1 <?php 
2 echo ""; 
3 echo ""; 
4 
echo "Mua Sach Tiep - <a 
href='delcart.php?productid=0'>Xoa Bo Gio Hang"; 
5 ?> 
Như vậy, code đầy đủ sẽ là: 
01 <?php 
02 echo ""; 
03 foreach($_SESSION['cart'] as $key=>$value) 
04 { 
05 $item[]=$key; 
06 } 
07 $str=implode(",",$item); 
08 
$connect=mysql_connect("localhost","root","root") or die("Can not connect 
database"); 
09 mysql_select_db("shop",$connect); 
10 $sql="select * from books where id in ($str)"; 
11 $query=mysql_query($sql); 
12 while($row=mysql_fetch_array($query)) 
13 { 
14 echo ""; 
15 echo "$row[title]"; 
16 
 echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." VND<br 
/>"; 
17 
 echo "So Luong: <input type='text' name='qty[$row[id]]' 
size='5' value='{$_SESSION['cart'][$row[id]]}'> - "; 
18 echo "Xoa Sach Nay"; 
19 
 echo " Gia tien cho mon hang: ". 
number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND"; 
20 echo ""; 
21 $total+=$_SESSION['cart'][$row[id]]*$row[price]; 
22 } 
23 echo ""; 
24 
echo "Tong tien cho cac mon hang: ". 
number_format($total,3)." VND"; 
25 echo ""; 
26 echo ""; 
27 echo ""; 
28 
echo "Mua Sach Tiep - <a 
href='delcart.php?productid=0'>Xoa Bo Gio Hang"; 
29 echo ""; 
30 ?> 
Sau khi thiết lập thành công trang giỏ hàng cơ bản, lúc này ta đã có thể thêm sách một cách dễ 
dàng. Tuy nhiên, giả sử trong trường hợp không có sách thì sao ?. Chúng ta vẫn chưa xét đến 
trường hợp giỏ hàng rỗng thì sẽ như thế nào. Vậy khi nào thì giỏ hàng rỗng ?. Đó là khi session 
của giỏ hàng không tồn tại Id của quyển sách nào. Cụ thể, $_SESSION[‘cart'][id]. Khi id không 
tồn tại trong session này thì cũng là lúc giỏ hàng không tồn tại. 
Vậy trước khi cho hiển thị giỏ hàng, ta cần kiểm tra xem có tồn tại id nào trong giỏ hàng hay 
không. Và vì id lưu ở dạng mảng đa chiều, nên ta cần dùng vòng lặp duyệt mảng foreach. 
foreach($_SESSION[‘cart’] as $k=>$v) 
Với $k có ý nghĩa tương đương $id quyển sách và $v tương đương là số lượng của quyển sách 
trong giỏ hàng. Vậy nếu tồn tại biến $k, thì tức có nghĩa là trong giỏ hàng có sách. 
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 // code xử lý giỏ hàng ở trên. 
16 } 
17 ?> 
Đoạn code này, ta sử dụng biến $ok để làm biến kiểm tra, mặc định khi load dữ liệu biến $ok sẽ 
bằng 1. Và khi trong giỏ hàng tồn tại sách thì chúng ta sẽ thay đổi biến $ok thành 2. Và gọi giỏ 
hàng như code ở trên. 
Ở phần trên, ta cũng có đề cập khi người dùng tiến hành chỉnh sửa số lượng từng món hàng đơn 
lẻ qua textbox và nhấn cập nhận thì hệ thống sẽ tiến hành chỉnh sửa lại thông tin giỏ hàng. Vậy 
chúng ta sẽ xử lý như thế nào cho trương hợp đó. 
Nếu chú ý, các bạn sẽ thấy dòng code chứa textbox cho phép người dùng nhập số lượng có một 
tham số đặc biêt là name=qty[$row[id]]. Vậy tham số này được dùng để làm gì ?. 
Tham số này, nói cho chúng ta biết số lượng đang hiển thị là thuộc mã sản phẩm nào. Vậy khi 
tiến hành cập nhật giỏ hàng ta sẽ kiểm tra, nếu $qty[$row[id]] mà có giá trị là 0. Tức là người đó 
muốn xóa bỏ giỏ hàng. Ngược lại, ta chỉ viêc cập nhật giỏ hàng $id tương ứng với số lượng nhập 
ở textbox. 
01 <?php 
02 if(isset($_POST['submit'])) 
03 { 
04 foreach($_POST['qty'] as $key=>$value) 
05 { 
06 if( ($value == 0) and (is_numeric($value))) 
07 { 
08 unset ($_SESSION['cart'][$key]); 
09 } 
10 elseif(($value > 0) and (is_numeric($value))) 
11 { 
12 $_SESSION['cart'][$key]=$value; 
13 } 
14 } 
15 header("location:cart.php"); 
16 } 
17 ?> 
Việc xóa món hàng ở trên chỉ đơn giản là hủy bỏ session của id đó. Việc cập nhật số lượng chỉ 
đơn giản là gán đè số lượng người nhập (thẻ value trong textbox) vào số lượng đang lưu trong 
session. 
Vậy code hoàn chỉnh của trang cart.php này sẽ như sau: 
01 <?php 
02 session_start(); 
03 if(isset($_POST['submit'])) 
04 { 
05 foreach($_POST['qty'] as $key=>$value) 
06 { 
07 if( ($value == 0) and (is_numeric($value))) 
08 { 
09 unset ($_SESSION['cart'][$key]); 
10 } 
11 elseif(($value > 0) and (is_numeric($value))) 
12 { 
13 $_SESSION['cart'][$key]=$value; 
14 } 
15 } 
16 header("location:cart.php"); 
17 } 
18 ?> 
19 
20 
21 Demo Shopping Cart - Created By My Kenny 
22 
23 
24 
25 Demo Shopping Cart 
26 <? 
27 $ok=1; 
28 if(isset($_SESSION['cart'])) 
29 { 
30 foreach($_SESSION['cart'] as $k => $v) 
31 { 
32 if(isset($k)) 
33 { 
34 $ok=2; 
35 } 
36 } 
37 } 
38 if($ok == 2) 
39 { 
40 
41 echo ""; 
42 foreach($_SESSION['cart'] as $key=>$value) 
43 { 
44 $item[]=$key; 
45 } 
46 $str=implode(",",$item); 
47 
 $connect=mysql_connect("localhost","root","root") or die("Can not 
connect database"); 
48 mysql_select_db("shop",$connect); 
49 $sql="select * from books where id in ($str)"; 
50 $query=mysql_query($sql); 
51 while($row=mysql_fetch_array($query)) 
52 { 
53 echo ""; 
54 echo "$row[title]"; 
55 
 echo "Tac gia: $row[author] - Gia: ".number_format($row[price],3)." 
VND"; 
56 
 echo "So Luong: <input type='text' name='qty[$row[id]]' 
size='5' value='{$_SESSION['cart'][$row[id]]}'> - "; 
57 echo "Xoa Sach Nay"; 
58 
 echo " Gia tien cho mon hang: ". 
number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND"; 
59 echo ""; 
60 $total+=$_SESSION['cart'][$row[id]]*$row[price]; 
61 } 
62 echo ""; 
63 
 echo "Tong tien cho cac mon hang: ". 
number_format($total,3)." VND"; 
64 echo ""; 
65 echo ""; 
66 echo ""; 
67 
 echo "Mua Sach Tiep - <a 
href='delcart.php?productid=0'>Xoa Bo Gio Hang"; 
68 echo ""; 
69 } 
70 else 
71 { 
72 echo ""; 
73 
 echo "Ban khong co mon hang nao trong gio hang<a 
href='index.php'>Buy Ebook"; 
74 echo ""; 
75 } 
76 ?> 
77 
78 
Và cuối cùng, khi người dùng nhấn xóa toàn bộ giỏ hàng hay chỉ xóa một món hàng, ta sẽ gọi tới 
trang delcart.php. Vậy trang này sẽ xử lý như thế nào ?. 
Tại đây, ta có thể nhận tham số là: $_GET[‘productid']; 
Tham số này sẽ là $id mà chúng truyền qua liên kết. Nếu xóa toàn bộ giỏ hàng, tức ta sẽ truyền 
cho nó giá trị bằng 0. Lúc này, ta sẽ hủy toàn bộ $_SESSION[‘cart']. Ngược lại, nếu là một $id 
cụ thể, thì ta chỉ xóa món hàng đó mà thôi. $_SESSION[‘cart'][$id]. 
Code hoàn chỉnh của file delcart.php như sau: 
01 <?php 
02 session_start(); 
03 $cart=$_SESSION['cart']; 
04 $id=$_GET['productid']; 
05 if($id == 0) 
06 { 
07 unset($_SESSION['cart']); 
08 } 
09 else 
10 { 
11 unset($_SESSION['cart'][$id]); 
12 } 
13 header("location:cart.php"); 
14 exit(); 
15 ?> 
Như vậy, chúng ta đã hoàn tất việc xây dựng hoàn chỉnh một hệ thống shopping cart đơn giản. 
Tuy rằng, đây không phải là một bài viết hoàn chỉnh trong việc xây dựng mô hình thương mại 
điện tử. Nhưng quá đó, phần nào giúp các bạn hiểu và dễ dàng phát triển hệ thống của mình có 
tổ chức hơn. 

File đính kèm:

  • pdfbai_giang_php.pdf