Thương mại điện tử có nguồn gốc từ Electronic Data Interchange (EDI). EDI là một phương pháp truyền thông tin từ máy này sang máy khác. EDI được phát triển cho phép các doanh nghiệp tự động hoá tiến trình truyền tải các tài liệu kinh doanh như hoá đơn và các mặt hàng. EDI cũng có thể sử dụng để truyền tải những loại thông tin khác. Ví dụ các trường đại học dùng EDI để truyền học bạ của các sinh viên, các trung tâm y tế dùng EDI để truyền hồ sơ bệnh án.
Thương mại điện tử bao gồm 3 loại giao dịch kinh doanh: Thứ nhất, giao dịch có thể diễn ra giữa doanh nghiệp với người tiêu dùng. Thứ hai, giao dịch giữa các doanh nghiệp với nhau. Thứ ba, giao dịch giữa người tiêu dùng với người tiêu dùng.
Các giao dịch bằng thẻ tín dụng dường như là một yếu tố cần thiết trong thương mại điện tử. Thương mại điện tử có thể chỉ bao gồm những bước dẫn đến hoạt động mua bán chứ không phải quyết định mua cuối cùng.
Thương mại điện tử đề cập đến quá trình mua hoặc bán một sản phẩm hoặc dịch vụ qua một mạng điện tử. Môi trường phổ biến nhất để thực hiện thương mại điện tử đó chính là Internet.
54 trang |
Chia sẻ: oanh_nt | Lượt xem: 1093 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Đề tài Đưa một cửa hàng lên mạng Internet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Ch¬ng I
§a mét cöa hµng lªn m¹ng Internet
1. GIíI THIÖU VÒ TH¦¥NG M¹I §IÖN Tö
1.1. TH¦¥NG M¹I §IÖN Tö Lµ G× ?
Thương mại điện tử có nguồn gốc từ Electronic Data Interchange (EDI). EDI là một phương pháp truyền thông tin từ máy này sang máy khác. EDI được phát triển cho phép các doanh nghiệp tự động hoá tiến trình truyền tải các tài liệu kinh doanh như hoá đơn và các mặt hàng. EDI cũng có thể sử dụng để truyền tải những loại thông tin khác. Ví dụ các trường đại học dùng EDI để truyền học bạ của các sinh viên, các trung tâm y tế dùng EDI để truyền hồ sơ bệnh án.
Thương mại điện tử bao gồm 3 loại giao dịch kinh doanh: Thứ nhất, giao dịch có thể diễn ra giữa doanh nghiệp với người tiêu dùng. Thứ hai, giao dịch giữa các doanh nghiệp với nhau. Thứ ba, giao dịch giữa người tiêu dùng với người tiêu dùng.
Các giao dịch bằng thẻ tín dụng dường như là một yếu tố cần thiết trong thương mại điện tử. Thương mại điện tử có thể chỉ bao gồm những bước dẫn đến hoạt động mua bán chứ không phải quyết định mua cuối cùng.
Thương mại điện tử đề cập đến quá trình mua hoặc bán một sản phẩm hoặc dịch vụ qua một mạng điện tử. Môi trường phổ biến nhất để thực hiện thương mại điện tử đó chính là Internet.
1.2. Nh÷ng c«ng nghÖ cña Microsoft ®îc dïng cho th¬ng m¹i ®iÖn tö
Microsoft đưa ra hai Web Server: Personal Web Server và Internet Infor-mation Server. Microsoft Personal Web Server hoạt động với Win9X hoặc Windows NT Workstation. Personal Web Server được tạo ra với hai mục đích: dùng để đăng tải một Website có lưu lượng thấp và để thử nghiệm một Website, không phải là một Web Server thích hợp cho việc đăng tải một site thực trên Internet. Internet Information Server có thể phục vụ hàng trăm hoặc thậm chí hàng ngàn người sử dụng cùng một lúc. Internet Information Server tương thích với Windows NT Server hoặc Windows 2000 Server. Nó được cung cấp như một thành phần của hai hệ điều hành này.
Để tạo một Website thương mại ta cần một cơ sở dữ liệu để lưu trữ thông tin về sản phẩm và những thông tin khác. Microsoft Access là hệ quản trị cơ sở dữ liệu dành cho máy để bàn nên chỉ sử dụng trong việc thử nghiệm Website hoặc Website có lưu lượng thấp. SQL Server là hệ quản trị Client/ Server nên có thể hỗ trợ cho hàng ngàn người sử dụng cùng một lúc.
Chuyên đề thương mại điện tử em sử dụng công nghệ Active Server Pages và cơ sở dữ lệu Access. Một trang ASP là một file bất kỳ định vị trên Server có phần mở rộng là .asp, sử dụng ngôn ngữ kịch bản nên các script ASP chạy trong cùng một tiến trình với Web Server và chúng hoạt động trong cơ chế đa luồng (multithread) điều này cho phép trang ASP hỗ trợ hiệu quả cho nhiều người dùng một lúc. Trang ASP được xử lý trên trang Web Server nên trang ASP sẽ tương thích với tất cả các trình duyệt Web.
ActiveX Data Object cho phép truy xuất cơ sở dữ liệu từ một trang ASP có thể sử dụng với bất kỳ cơ sở dữ liệu nào tương thích Open Databe Connec- tivity (ODBC) như Access, SQL Server hoặc OLEDB, trong những cơ sở dữ liệu đó có Oracle, Sybase, Informix, DB2, Ingres.
2. t¬ng t¸c víi kh¸ch hµng
2.1. lµm viÖc víi ®èi tîng RESPONSE
Một trang ASP là một trang HTML chuẩn có chứa script vì thế có thể sử dụng các script để gửi nội dung động đến trình duyệt. Trong khi điều hành một Website thương mại có nhiều tình huống mà ta phải gửi nội dung động đến khách hàng. Chẳng hạn như khi khách hàng chọn một vài sản phẩm trong cửa hàng, ta phải tạo động một biên nhận kèm những thông tin đặt hàng của khách hàng.
Response.Write để gửi dữ liệu đến trình duyệt của khách hàng và Response.End để kết thúc sự thực thi của một script.
2.2. Lµm viÖc víi ®èi tîng request
Trong khi đối tượng Response đại diện tất cả nội dung được gửi từ Web Server đến trình duyệt Web thì đối tượng Request đại diện mọi thông tin được gửi từ trình duyệt Web đến Web Server, có 4 tập hợp rất hữu dụng:
Tập hợp QueryString
Đại diện các biến chuỗi nghi vấn.
Tập hợp Form
Đại diện các trường trong form HTML.
Tập hợp Server Variable
Đại diện các tiêu đề trình duyệt và các biến Server.
Tập hợp Cookies
Đại diện các cookies của trình duyệt.
Sử dụng các chuỗi truy vấn là phần URL xuất hiện sau một dấu chấm hỏi. Ví dụ: chuỗi truy vấn có tên là p có giá trị “Active Server Pages”. Nếu nhập chuỗi này vào thanh địa chỉ của trình duyệt Web thì tất cả các danh sách từ Yahoo! Có liên quan đến Active Server Pages sẽ được trả về. Thông thường không cần nhận trực tiếp một chuỗi truy vấn vào thanh địa chỉ của trình duyệt mà tạo liên kết trong một trang có chứa chuỗi truy vấn.
Sử dụng tập hợp form: Để cho phép khác hàng đăng ký tại Website, hoàn thành một form tiếp thị, hoặc nhập số thẻ tín dụng ta phải sử dụng một Form HTML. Để gọi ra thông tin mà khách hàng nhập vào form của đối tượng Request. Điều quan trọng là kiểm tra xem các trường có rỗng hay không, ta có thể so sánh giá trị của trường với một chuỗi độ dài zero, hoặc ta có thể đặt điều kiện nếu chuỗi nhập vào rỗng thì gán cho chuỗi một vài ký tự đặc biệt. Ngoài ra, còn phải hiển thị lại các trường trong form khi khách hàng nhập sai nội dung trong form nào đó, đây là tính khoan dung. Để làm được điều này cần phải truyền tất cảc dữ liệu về form ban đầu.
Gọi ra các biến form và chuỗi truy vấn, có một vài tình huống nào đó mà ta cần gọi ra một biến nếu nó được truyền trong một chuỗi truy vấn hoặc một biến form, có thể tìm kiếm tất cả các tập hợp chứa trong đối tượng Request bằng cách không chỉ định một tập hợp cụ thể nào.
Form và chuỗi truy vấn
Click here
-----------------------
Gọi một biến form hoặc một biến chuỗi
<%
myvar=Request("myvar")
Response. Write myvar
%>
2.3. Lµm viÖc víi c¸c biÕn Server
Tập hợp này chứa các biến đại diện cho các tiêu đề của trình duyệt và các thuộc tính của Server, với biến Server ta có thể biết được trang hiện thời, trang cuối cùng mà một khách hàng truy cập, địa chỉ Internet liên hệ với khách hàng, loại trình duyệt mà khách hàng sử dụng.
3. X©y dùng danh môc s¶n phÈm
3.1. T¹o c¬ së d÷ liÖu cho cöa hµng
Bước đầu tiên trong việc tạo cửa hàng trực tuyến là tạo cơ sở dữ liệu để lưu giữ tất cả các thông tin về các sản phẩm. Microsoft Access là cơ sở dữ liệu thích hợp để tạo Website thử nghiệm hoặc một Website có lưu lượng thấp, tuy nhiên ta có thể nâng cấp cơ sở dữ liệu Access lên cơ sở dữ liệu SQL Server bằng cách sử dụng Microsoft Upsizing Tools. Công cụ này được cung cấp kèm theo Microsoft Access 2000.
Tạo bảng products:
Product_id
AutoNumber
Chứa số duy nhất dành cho sản phẩm trong bảng này.
Product_name
Text
Chứa tên của sản phẩm trong bảng.
Product_price
Currency
Chứa giá hiện thời của sản phẩm.
Product_picture
Text
Chứa đường dẫn đến hình ảnh của sản phẩm.
Product_category
Text
Chứa loại của sản phẩm.
Product_briefdesc
Memo
Chứa mô tả ngắn về sản phẩm.
Product_fulldesc
Memo
Chứa mô tả đầy đủ về sản phẩm, cột này có thể là 1 trang đầy thông tin.
Product_status
Number
Chứa thông tin về tình trạng hiện thời sản phẩm.
Kết nối cơ sở dữ liệu
Hai loại DSN khác nhau có thể được tạo ra. Nếu tạo một file DSN, thông tin về kết nối cơ sở dữ liệu được lưu trong một file. Nếu tạo một System DSN thì thông tin kết nối cơ sở dữ liệu được lưu trong registry của máy tính. Một kết nối cơ sở dữ liệu được đại diện trong một trang ASP bởi đối tượng Connection của ADO.
Mở một kết nối cơ sở dữ liệu (Data Source Name: accessDSN)
<%
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open "accessDSN"
%>
Việc mở một kết nối cơ sở dữ liệu giống như mở một kết nối điện thoại. Sau khi kết nối được mở, các thông điệp có thể được truyền qua lại giữa script ASP và cơ sở dữ liệu.
3.2. T¹o form addproducts
Trang addProducts.asp chứa một form HTML cho phép nhập vào thông tin sản phẩm, trang manageProducts.asp – khi đệ trình form được chứa trong addProducts.asp thì trang này sẽ thực sự thêm thông tin sản phẩm mới vào trong cơ sở dữ liệu. Trang addProducts.asp chứa một form HTML chuẩn với các trường tương ứng với các cột của bảng Products.
Add Product
Add Product
Product Name:
Product Price:
Product Picture:
Product Category:
Product Brief Desc:
Product Full Desc:
Product Status:
INACTIVE
ACTIVE
Mục đích duy nhất là thu thập thông tin về sản phẩm thông qua một form HTML. Thông tin sản phẩm không được thêm vào cơ sở dữ liệu cho đến khi form này được đệ trình và trang thứ hai – manageProducts.asp được yêu cầu.
<%
FUNCTION fixQuotes (theString)
fixQuotes=REPLACE(theString,"'","''")
END FUNCTION
' Get the form Variables
addProduct = TRIM (Request("addProduct"))
updateProduct = TRIM (Request("updateProduct"))
productID = TRIM (Request("productID"))
productName = TRIM (Request("productName"))
productPrice = TRIM (Request("productPrice"))
productPicture = TRIM (Request("productPicture"))
productCategory = TRIM (Request("productCategory"))
productBriefDesc = TRIM (Request("productBriefDesc"))
productFullDesc = TRIM (Request("productFullDesc"))
productStatus = TRIM (Request("productStatus"))
' Assign Default Variables
IF productName="" THEN
productName="?????" END IF
IF productPrice="" THEN
productPrice=0 END IF
IF productPicture="" THEN
productPicture="?????" END IF
IF productCategory="" THEN
productCategory="?????" END IF
IF productBriefDesc="" THEN
productBriefDesc="?????" END IF
IF productFullDesc="" THEN
productFullDesc="?????" END IF
' Open the Database Connection
Set Con=Server.CreateObject( "ADODB.Connection" )
Con.Open "accessDSN"
%>
Manage Products
<%
' Add new product
IF addProduct "" THEN
sqlString="INSERT INTO PRODUCTS (product_name, product_price, product_picture, product_category, product_briefdesc, product_fulldesc, product_status)" VALUES ('"&productName&"', '"&productPrice&"', '"&productPicture&"', '"&productCategory&"', '"&productBriefDesc&"', '"&productFullDesc&"', '"&productStatus&"')"
Con.Execute sqlString
%>
was added to the database
<% END IF
' Update product
IF updateProduct "" THEN
sqlString="UPDATE products SET "&_
"product_name='"&fixQuotes(productName)&"',"&_
"product_price='"&productPrice&"',"&_
"product_picture='"&fixQuotes(productPicture)&"',"&_
"product_category='"&fixQuotes(productCategory)&"',"&_
"product_briefdesc='"&fixQuotes(productBriefdesc)&"',"&_
"product_fulldesc='"&fixQuotes(productFulldesc)&"',"&_
"product_status='"&productStatus&"' WHERE product_id='"&productID&"'"
Con.Execute sqlString
%>
was update in the database
Manage Products
<%
sqlString="SELECT product_id,product_name FROM products"
SET RS=Con.Execute(sqlString)
WHILE NOT RS.EOF
%>
">
<%
RS.MoveNext
WEND
%>
Add Product
Khi muốn thay đổi thông tin về sản phẩm chẳng hạn như giá cả ta cần thêm trang updateProducts.asp.
<%
' Get the Product ID
productID=request("pid")
' Open the Database Connection
Set Con=Server.CreateObject ( "ADODB.Connection" )
Con.Open "accessDSN"
' Open the Recordset
Set RS=Server.CreateObject ( "ADODB.Recordset" )
RS.ActiveConnection=Con
RS.CursorType=3
RS.Open "SELECT * FROM products WHERE product_id ="&productID
IF NOT RS.EOF THEN
productName = RS("product_name")
productPrice = RS("product_price")
productPicture = RS("product_picture")
productCategory = RS("product_category")
productBriefDesc = RS("product_briefDesc")
productFullDesc = RS("product_FullDesc")
productStatus = RS("product_status")
END IF
' Close the Recordset
RS.Close
FUNCTION SELECTED ( firstVal, secondVal )
IF cSTR( firstVal)=cSTR (secondVal) THEN
SELECTED="SELECTED"
END IF
END FUNCTION
%>
Update Product
Update Product
Product Name:
<input name="productName" size="50" maxlength="50"
value="">
Product Price:
<input name="productPrice" size="10"
values="">
Product Picture:
<input name="productPicture" size="50" maxlength="50"
value="">
Product Category:
<input name="productCategory" size="50" maxlength="50"
value="">
Product Brief Desc:
<textarea name="productBriefDesc" cols="50" rows="2"
wrap="virtual" >
Product Full Desc:
<textarea name="productFullDesc" cols="50" rows="10"
wrap="virtual" >
Product Status:
> INACTIVE
> ACTIVE
">
4. hiÓn thÞ c¸c s¶n phÈm trong cöa hµng
4.1. Sö dông c¸c Recordset
Đối tượng Recordset đại diện một tập hợp các mẩu tin được gọi ra từ một cơ sở dữ liệu. Bất cứ khi nào ta sử dụng một Recordset để hiển thị các mẩu tin cơ sở dữ liệu bên trong một trang ASP thì ta tuân thủ theo những bước sau:
Mở một kết nối cơ sở dữ liệu với đối tượng Connection.
Mở một Recordset bằng cách sử dụng câu lệnh SELECT của SQL.
Hiển thị các mẩu tin trong Recordset bằng cách duyệt qua Recordset.
Ví dụ: Ta hiển thị tên của tất cả các sản phẩm trong bảng Products.
<%
' Open Database connection
Set Con=Server.CreateObject("ABODB.Connection")
Con.Open "accessDSN"
' Open Recordset
Set RS=Server.CreateObject("ABOBD.Recordset")
RS.ActiveConnection=Con
RS.Open "SELECT * FROM products"
' Loop through Recordset
WHILE NOT RS.EOF
Response.Write RS("product_name")
RS.MoveNext
WEND
%>
Ta có thể xem một Recordset như một file văn bản. Mỗi dòng trong một Recordset giống như một dòng riêng biệt trong file văn bản. Bất cứ khi nào ta gọi phương thức MoveNext, ta được chuyển đến dòng kế tiếp. Khi đến cuối tập tin (cuối Recordset) thì thuộc tính EOF (End of File) có giá trị là True.
Sử dụng câu lệnh Select của SQL
Ta mở một Recordset bằng cách sử dụng câu lệnh SELECT của SQL. Để chọn tất cả các cột và tất cả các hàng trong một bảng sử dụng câu lệnh sau:
SELECT * FROM table_name
Tuy nhiên, việc gọi ra tất cả các cột từ một bảng là một ý kiến không hay. Ta không nên đặt gánh nặng lên vai server bằng việc gọi ra những dữ liệu không thực sự cần. Nếu dự định chỉ thị những cột nào đó trong một bảng thì ta nên giới hạn các cột được gọi ra bằng cách liệt kê các cột:
SELECT column1, column2 FROM table_name
Ta cũng có thể sử dụng câu lệnh SELECT để gọi ra chỉ những hàng nào đó trong một cơ sở dữ liệu. Ví dụ, chọn chỉ những dòng trong bảng Products trong đó cột product_category có giá trị là Chocolates:
SELECT product_name FROM ProductsWHERE product_category="Chocolates"
Sử dụng biểu thức toán học và logic bên trong mệnh đề WHERE để gọi ra các mẩu tin đáp ứng đúng các điều kiện. Ví dụ, gọi ra chỉ những sản phẩm có giá từ $20.00 đến $30.00:
SELECT product_name FROM ProductsWHERE product_price > 20.00 AND product_price < 30.00
Hơn thế, ta có thể mở rộng câu lệnh SELECT xa hơn bằng cách sử dụng mệnh đề ORDER BY – cho phép gọi ra các mẩu tin từ một bảng theo một thứ tự nào đó. Ví dụ, gọi ra các sản phẩm loại Chocolates với tên các sản phẩm được xếp theo thứ tự abc:
SELECT product_name FROM ProductsWHERE Product_category="chocolates"ORDER BY product_name
Cuối cùng, ta có thể sử dụng câu lệnh SELECT để gọi chỉ những mẩu tin riêng biệt trong một bảng. Ví dụ, liệt kê tất cả các loại sản phẩm riêng biệt trong bảng Products:
SELECT DISTINCT product_categoryFROM Products
Các loại con trỏ của Recordset
Khi một Recordset được mở với một kiểu con trỏ nào đó. Ta có thể mở một Recordset với bất kỳ con trỏ nào trong bốn loại con trỏ sau: forward-only, static, keyset và dynamic. Loại con trỏ của một Recordset quyết định các phương thức và thuộc tính mà Recordset sẽ hỗ trợ. Theo mặc định, khi một Recordset được mở, nó được mở với một con trỏ forward-only. Tuy nhiên, con trỏ forward-only là loại con trỏ bị hạn chế nhất. Ví dụ, sử dụng thuộc tính RecorCount của đối tượng Recordset, ta có thể xác định số lượng các mẩu tin được chứa trong một Recordset với con trỏ forward-only. Để sử dụng thuộc tính RecordCount, ta phải mở Recordset với một con trỏ linh hoạt hơn.
4.2. HiÓn thÞ c¸c s¶n phÈm
Tạo giao diện cho cửa hàng trực tuyến cho phép khách hàng duyệt qua danh sách các sản phẩm ta cần tạo 4 file:
CatList.asp
File này chứa một script hiển thị từng loại sản phẩm. Các khách hàng có thể nhấp vào một loại sản phẩm cụ thể để xem danh sách các sản phẩm trong loại này.
ProductList.asp
File này chứa một script liệt kê tất cả các sản phẩm trong một loại cụ thể.
Default.asp
File này là trang ASP chính của cửa hàng, hiển thị danh sách các sản phẩm.
Product.asp
File này hiển thị chi tiết về một sản phẩm cụ thể. Khi một khách hàng nhấp vào tên của một sản phẩm bên trong trang Default.asp thì các chi tiết của sản phẩm được hiển thị trong trang này.
Chọn các loại sản phẩm
Khi thêm các sản phẩm vào cửa hàng trực tuyến, có một trường dành cho loại sản phẩm (product_category) khi khách hàng duyệt qua cửa hàng họ có thể chọn một loại sản phẩm cụ thể và chỉ xem các sản phẩm trong loại này.
<%
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open "accessDSN"
Set catRS=Server.CreateObject("ADODB.Recordset")
catRS.ActiveConnection=Con
sqlString="SELECT DISTINCT product_category FROM products"
sqlString=sqlString & "WHERE product_status=1"
sqlString=sqlString & "ORDER BY product_category"
catRS.Open sqlString
%>
Home
Home
">
<%
catRS.MoveNext
WEND
%>
Script này tạo ra một thực thể của đối tượng Recordset tên là catRS. Sau khi catRS được mở ra, các loại sản phẩm được hiển thị từng cái một bằng cách duyệt qua Recordset, nếu một loại sản phẩm không là loại hiện thời thì nó được hiển thị như một liên kết siêu văn bản. Nếu một loại không phải là loại hiện thời thì nó được hiển thị như một liên kết siêu văn bản. Mỗi liên kết truyền một biến chuỗi truy vấn tên là cat. Biến chuỗi truy vấn này chứa tên của loại sản phẩm được mã hoá URL.
Hiển thị danh sách các sản phẩm
Khi khách hàng nhấp vào một loại, tên của loại này được truyền bên trong biến chuỗi truy vấn cat. Script productList.asp sử dụng biến cat để chọn chỉ những sản phẩm nào thuộc loại hiện thời được chọn.
<%
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open "accessDSN"
Set prodRS=Server.CreateObject("ADODB.Recordset")
prodRS.ActiveConnection=Con
sqlString="SELECT product_id, product_picture, product_name, product_briefDesc" FROM Products WHERE product_category='"&cat&"'
AND product_status=1 ORDER BY product_name "
prodRS.Open sqlString
%>
"?????" THEN %>
">
">
">
get more information
<%
prodRS.MoveNext
WEND
%>
Script này tạo một thực thể của đối tượng Recordset có tên là prodRS. Recordset prodRS chứa tất cả các sản phẩm thuộc một loại nào đó. Một mô tả về mỗi sản phẩm được hiển thị từng cái một, nếu một sản phẩm có một hình ảnh thì hình ảnh này được hiển thị trong ô bên trái tên sản phẩm và phần mô tả ngắn gọn được hiển thị trong ô bên phải, tên của các sản phẩm được hiển thị như các liên kết siêu văn bản đến trang Product.asp. Nếu một khách hàng nhấp vào một sản phẩm thì họ sẽ được mang đến trang Product.asp để xem chi tiết về sản phẩm. Mỗi liên kết đến trang Product.asp chứa một biến chuối truy vấn tên là pid. Biến này được truyền đến trang Product.asp khi liên kết được nhấp. Trang Product.asp sử dụng biến này để hiển thị thông tin của đúng sản phẩm.
Tạo trang chủ của cửa hàng
Trang Default.asp là trang ASP chính của cửa hàng trực tuyến, các khách hàng duyệt qua các sản phẩm của cửa hàng bằng cách yêu cầu trang này, script CatList.asp và ProductList.asp kết hợp với nhau trong Default.asp
<%
Cat=TRIM(Request("Cat"))
IF Cat="" THEN Cat="Home"
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open "accessDSN"
%>
Viet Khanh's Candies and Gifts
shopping cart
acount
<table width="200" cellpadding="4" cellspacing="0"
bgcolor="lightyellow" border="1">
Copyright © 2000 the Viet Khanh Gift Company
Hiển thị chi tiết về sản phẩm
Khi một khách hàng nhấp vào tên của một sản phẩm, hoặc nhấp vào Get more Information, họ sẽ được mang đến trang Product.asp trang này trình bày thông tin chi tiết hơn về một sản phẩm. Khách hàng cũng có thể sử dụng trang này để thêm một sản phẩm vào giỏ đi chợ của mình.
<%
' Get the productID
productID=TRIM(Request("pid"))
' Open the Database Connection
Set Con=Server.CreateObject("ADODB.Connection")
Con.Open "accessDSN"
' Get the product information
sqlString="SELECT* FROM Products"
sqlString=sqlString & "WHERE product_id=&productID"
Set RS=Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection=Con
RS.Open sqlString
' Get Current Category
cat=RS("product_category")
%>
Vietkhanh's Candies and Gifts
shopping cart
account
<table width="200" cellpadding="4" cellspacing="0"
bgcolor="lightyellow" border="1">
"?????" THEN %>
">
<input name="pid" type="hidden"
value=" ">
<input name="pid" type="hidden"
value=" ">
Copyright © 2000 the Johnson Gift Company
Phân trang Recordset
Nếu ta liệt kê một số lượng sản phẩm thuộc một loại duy nhất thì ta có thể không muốn tất cả các sản phẩm được hiển thị trên chỉ một trang, điều đó làm cho cửa hàng có khả năng mở rộng hơn nữa việc kết nối và gọi ra các mẩu tin từ một cơ sở dữ liệu. Chẳng hạn ta muốn không quá 5 mô tả về sản phẩm được liệt kê trên một trang.
Đối tượng Recordset có 3 thuộc tính cho phép ta các kết quả từ một truy vấn cơ sở dữ liệu ra nhiều trang:
AbsolutePage
Thiết lập hoặc trả về trang chứa các mẩu tin hiện thời
PageCount
Trả về số trang trong một Recordset
PageSize
Thiết lập hoặc trả về số lượng mẩu tin được chứa trong một trang (mặc định là 10)
4.3. Lµm cho cöa hµng cã kh¶ n¨ng më réng h¬n n÷a
Việc kết nối và gọi ra các mẩu tin từ một cơ sở dữ liệu chiếm rất nhiều tài nguyên máy tính. Nếu ta muốn tạo một Website có khả năng mở rộng để hỗ trợ hàng trăm người dùng đồng thời thì ta nên tránh việc chọn các mẩu tin từ một cơ sở dữ liệu bất cứ khi nào có thể.
Chắc chắn, các loại sản phẩm sẽ không thay đổi thường xuyên. Một cách để tránh gọi ra các loại sản phẩm từ cơ sở dữ liệu là chỉ cần liệt kê các loại sản phẩm dưới dạng các liên kết HTML tĩnh. Nói một cách khác ta có thể biến file CartList.asp thành một trang HTML tĩnh, nhưng khuyết điểm của giải pháp này là phải nhập lại file CartList.asp bất cứ khi nào thêm một sản phẩm thuộc loại mới hoặc xoá bỏ hoặc ngừng hoạt động đối với tất cả các sản phẩm trong một loại. Việc bảo trì Website cũng có những chi phí đáng quan tâm. Thật may mắn là có một giải pháp tốt hơn. Thay vì gọi ra danh sách các loại sản phẩm bất cứ khi nào hiển thị một trang, ta có thể gọi ra các loại sản phẩm một lần và lưu chúng trong bộ nhớ. Như vậy ta tránh được việc truy xuất cơ sở dữ liệu bất cứ khi nào các loại sản phẩm được hiển thị. Thuận lợi của giải pháp này là nó làm cho cửa hàng trực tuyến có khả năng mở rộng nhiều hơn trong khi không làm cho việc bảo trì khó khăn hơn. Danh sách các loại sản phẩm vẫn được tạo ra tự động từ cơ sở dữ liệu. Tuy nhiên, danh sách này không được tạo ra mỗi lần một trang được yêu cầu.
Để lưu trữ danh sách các loại sản phẩm trong bộ nhớ, ta sẽ sử dụng biến Application, nó sẽ chứa một mảng trong đó mỗi phần tử chứa tên của một loại sản phẩm. Bởi vì danh sách các loại sản phẩm được lưu trữ trong bộ nhớ nên nó sẽ không được cập nhật tự động nếu thay đổi một sản phẩm trong cơ sở dữ liệu. Các loại sản phẩm sẽ được tái nạp chỉ khi máy tính khởi động lại hoặc dịch vụ Web bị ngưng và khởi động lại. Nếu buộc danh sách các loại sản phẩm phải được nạp lại ta dùng script reset, script này chỉ đơn giản là thiết lập biến Application tên là productcategories để nó có giá trị là một chuỗi rỗng. Điều này xoá mảng khỏi biến Application làm cho danh sách các loại sản phẩm được gọi ra từ cơ sở dữ liệu lần kế tiếp một trang được gọi
<%
Application.Lock
Application("productCategories")=""
Application.Unlock
%>
Product Categories have been reset !
5. t×m kiÕm c¸c s¶n phÈm
5.1. hiÓn thÞ mét danh s¸ch c¸c s¶n phÈm
Chọn danh sách các sản phẩm nổi bật
Đầu tiên, ta cần thêm một trường phụ vào bảng Products. Để cho phép chọn những sản phẩm mà muốn liệt kê để làm nổi bật ta sẽ thay đổi file updateProduct.asp lẫn file managerProducts.asp.
Trang updateProduct.asp (phần Open the Recordset) gán giá trị của cột product_featured cho biến cục bộ productFeatured, khi product_featured là NULL thì biến productFeatured được gán giá trị 0.
ProductFeatured = RS("product_featured")IF isNULL(productFeatured) THEN productFeatured = 0
Kế đến, thêm đoạn mã sau vào trong form HTML cho phép chọn một sản phẩm làm sản phẩm nổi bật:
Product Featured:
>Nomal
>Featured
Cuối cùng, thay đổi file manageProduct.asp để cập nhật cơ sở dữ liệu với thông tin về việc một sản phẩm có được chọn làm sản phẩm nổi bật hay không, thêm vào Get the form Variables:
ProductFeatured=TRIM(Request("productFeatured"))
Thêm product_featured='"&productfeatured&"' vào cuối chuỗi SQL được tạo trong phần Update Product.
Gọi ra danh sách các sản phẩm nổi bật
Ta đã chọn các sản phẩm nổi bật cho cửa hàng trực tuyến, ta sẽ cần một phương pháp để hiển thị các sản phẩm nổi bật trên trang chủ. Hiển thị danh sách cá sản phẩm nổi bật với sự giúp đỡ của một file dùng chung tên là Featured.asp, nó được hiển thị khi không có loại nào được chọn. Nó được chứa t
Các file đính kèm theo tài liệu này:
- Thuongmaidientu-54.doc