Đồ án Ứng dụng thương mại điện tử trên mạng Internet và thiết kế một trang Web

ADO (Access Data Object) là đối tượng Active X truy nhập dữ liệu mới nhất mà Microsoft đưa ra nhằm hỗ trợ tích cực cho việc tương tác với dữ liệu qua bất kì một nhà cung cấp dữ liệu nào (DB Provider). ADO cho phép viết các ứng dụng truy nhập dữ liệu từ các nguồn dữ liệu OLE DB, bao gồm các nguồn dữ liệu ODBC. Việc kết nối ODBC thông qua các driver cơ sở dữ liệu, là các chương trình đưa thông tin từ ứng dụng Web tới cơ sở dữ liệu, là các chương trình đưa thông tin từ ứng dụng Web tới cơ sở dữ liệu. Việc kết nối này sử dụng tên nguồn dữ liệu DSN (Data Souce Name). DSN chứa những thông tin về bảo mật, việc tham chiếu tới cơ sở dữ liệu vật lý. Khi sử dụng ADO với ASP, mọi truy xuất dữ liệu và thao tác được thực hiện trên Server.

doc95 trang | Chia sẻ: oanh_nt | Lượt xem: 1247 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Ứng dụng thương mại điện tử trên mạng Internet và thiết kế một trang Web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i với các nước đang phát triển. Nếu không nhanh chóng tiếp cận với nền kinh tế số hóa, hay còn gọi là nền kinh tế ảo (virtual economy) thì sau khoảng một thập kỷ nữa, nước đang phát triển có thể bị bỏ rơi hoàn toàn. Khía cạnh lợi ích này mang tính tiềm tàng, tính chiến lược công nghệ và tính chính sách phát triển mà các nước chưa công nghiệp hóa cần lưu ý vì có luận điểm cho rằng: sớm chuyển sang nền kinh tế số hóa thì một nước đang phát triển có thể tạo ra một bước nhảy vọt (leapfrog), tiến kịp các nước đi trước trong một thời gian ngắn hơn. 3.4. BàI TOáN: WEBSITE BáN HàNG TRÊN MạNG INTERNET Website bán hàng trên mạng được xây dựng trên nền tảng HTML và ASP để tận dụng tính năng đa phương tiện của môi trường Web và đáp lại những tình huống từ phía người mua hàng cũng như người bán. Website bán hàng trên mạng cũng giống như siêu thị trên Internet nhưng quy mô bán hàng của nó chỉ gói gọn trong những hàng hóa thuộc một lĩnh vực nào đó. Hoạt động của Website bán hàng qua mạng: Do đặc điểm nổi bật của Internet là người mua và người bán không hề gặp mặt nhau và người mua không thể trực tiếp kiểm tra mặt hàng, do đó để xây dựng một cửa hàng ảo, cần phải xây dựng cho cửa hàng ảo những chức năng sau: quản lý khách hàng, quản lý mua hàng, quản lý mặt hàng, bán hàng, xúc tiến siêu thị, quản lý và xử lý đơn đặt hàng Mục đích của việc xây dựng Website bán sách qua mạng: Ngày nay đã xuất hiện nhiều hình thức bán hàng qua mạng Internet như các siêu thị ảo trên mạng Người tiêu dùng giờ đây không còn phải ra ngoài mới có thể mua được hàng hóa mà chỉ cần ngồi trước máy tính, truy cập vào Internet là có thể biết được chính xác thông tin về mặt hàng của mình, sau đó nếu thích có thể đặt mua trực tiếp ngay trên mạng. Xuất phát từ lý do đó em đã đi vào xây dựng Website Bookshop, với mục đích lớn nhất là giúp khách hàng có thêm thông tin về từng loại sách gắn liền với giá cả hợp lý đáp ứng nhu cầu của khách hàng một cách tốt nhất. Website có những thông tin mới nhất, các loại sách phong phú, giá cả hợp lý, cung cấp sản phẩm nhanh nhất và đúng thị hiếu người tiêu dùng trên thị trường. Website chỉ hoạt động như người môi giới. Nó tiếp nhận đơn đặt hàng của khách hàng và chuyển tiếp đơn đặt hàng đến quản trị hệ thống. Hệ thống không tham gia trực tiếp vào quá trình bán hàng. Việc bán hàng diễn ra nội bộ giữa khách hàng và người bán hàng. Mỗi website bán hàng có thể có các đối tượng riêng phù hợp với loại mặt hàng được bán. ở đây em xây dựng website bán sách và những đặc điểm của nó sẽ được trình bày chi tiết ở chương 5. Chương 4 CÔNG NGHệ Và PHầN MềM ứNG DụNG CƠ BảN 4.1. CÔNG NGHệ ASP: 4.1.1. Giới thiệu chung: ASP (Active Server Page) do Microsoft phát triển là môi trường ứng dụng phía server hỗ trợ mạnh trong việc ứng dụng Web. Các ứng dụng ASP rất dễ viết đồng thời có thể tích hợp các công nghệ sẵn có của Microsoft như COM một cách dễ dàng. ASP đảm nhận chức năng gửi và nhận dữ liệu giữa máy khách và máy chủ. ASP cung cấp các đối tượng cơ bản như Server, Application, Session, Request, Response xây dựng nên môi trường cho các ứng dụng Active Server. Session Object Application Object Server Object Response Object Request Object Client Hình 1: Mô hình các đối tượng trong ASP Đối tượng Application: Đối tượng này sẽ khởi tạo khi ứng dụng Web bắt đầu chạy. Khái niệm bắt đầu chương trình của ứng dụng Web được xác định khi có bất kỳ một người sử dụng Web nào đó truy nhập vào thư mục ảo. Mọi người truy nhập đều có thể sử dụng các biến được khai báo trong đối tượng này, thông qua Application (tên_biến). Trong mô hình trên, đối tượng Application dùng lưu giữ các thông tin trao đổi giữa các trang ASP và các Session thông qua biến lưu trữ của Application. Đối tượng Session: Đối tượng này được tạo ra tương ứng cho mỗi người truy nhập vào ứng dụng Web. Việc xác định mỗi người truy nhập được thực hiện thông qua việc kiểm tra các thông số về Browser và thời gian truy cập của Browser đó. Các biến khai báo của Session chỉ được dùng bởi người truy cập tương ứng, thông qua Session (tên_biến). Đối tượng Session dùng lưu trữ các thông tin chỉ có tác dụng đối với kết nối của một người dùng trong khoảng thời gian nào đó. Đối tượng Request: Đối tượng Request cung cấp các thông tin và tham số được người dùng chuyển lên trình chủ thông qua thao tác submit dữ liệu trong thẻ Form của trang Web hoặc truyền bằng chuỗi QueryString trên địa chỉ URL, như địa chỉ URL? tên_biến=giá _trị. Cách lấy giá trị biến thông qua Request (tên_biến). Dùng đối tượng Request có thể chia sẻ thông tin qua lại giữa các trang ASP trong một ứng dụng và để lấy giá trị các cookie lưu trữ trên trình khách. Đối tượng Response: Ngược lại, để gửi dữ liệu lại cho trình duyệt trên trình khách (client) ta có đối tượng Response. Đ ây là tập hợp các giá trị được gửi trả về cho Web Browser hiển thị, thông qua lệnh Response. Write [tên_biến]= giỏ_trị. Các hàm và thuộc tính của nó cho phép ta tạo và sửa đổi thông tin phản hồi, chuyển kết xuất từ trình chủ và trình khách. Đối tượng Server: Đối tượng này tạo ra các đối tượng mới nhằm tương tác với các chức năng khác, để thực hiện một nhiệm vụ nào đó trên Web Server. Đối tượng Server cung cấp các phương thức và tiện ích sau: Create Object (objectname): Tạo một đối tượng thuộc dạng COM của Windows thực thi phía trình chủ. MapPath (path): Chuyển đường dẫn URL ảo thành đường dẫn vật lý của ổ đĩa trên máy chủ. Execute (path): Thực thi trang .asp trong đường dẫn path. HTMLEncode (string): Mã hóa chuỗi string theo quy tắc chuyển đổi của URL hiểu được bởi các trình duyệt phía trình khách. Trên đây trình bày các đối tượng mà ASP đã xây dựng sẵn. Mỗi đối tượng có những thuộc tính riêng cung cấp các tính năng hoạt động nhằm phục vụ cho ứng dụng. Một trang ASP thông thường gồm có 3 thành phần: Dữ liệu văn bản. Các thẻ HTML. Các đoạn mã chương trình phía Client đặt trong cặp thẻ >% và %>. Trang ASP đơn thuần là một tập tin văn bản chứa mã định dạng HTML kết hợp mã thông dịch như VBScript hay Jscript. Tập tin ASP mang tên mở rộng .asp. Phần mở rộng này giúp Web Server yêu cầu trình xử lý trang ASP trước khi trả về cho trình duyệt. Ngôn ngữ thông dụng nhất dùng để viết các mã của ASP là VBScript. Ngoài ra, ta cũng có thể viết các mã bằng ngôn ngữ như: Jscript, Perl, nếu trên Web Server có cài đặt các bộ xử lý ngôn ngữ này. Các đoạn mã viết trong trang ASP sẽ được các bộ xử lý ngôn ngữ trên Web Server xử lý tuần tự từ trên xuống dưới. Kết quả của việc xử lý này là trả về trang HTML cho Web Server và Web Server sẽ gửi trang này về cho trình duyệt. Ưu điểm của thiết kế ứng dụng Web bằng ASP và ngôn ngữ kịch bản (script) là ứng dụng dễ bảo trì, sửa đổi cùng với việc xử lý dữ liệu động hiệu quả. Client BD Server ODBC OLEDB Trỡnh duyệt WEB A D O DBMS SQL Server ASP HTTP Mô hình ứng dụng Web thể hiện qua công nghệ ASP 4.1.2. Hoạt động của một trang ASP: Khi một trang ASP được yêu cầu bởi Web Browser, Web Server sẽ duyệt tuần tự trang ASP này và chỉ dịch các script ASP. Tùy theo người xây dựng trang Web này quy định mà kết quả do Web Server dịch sẽ trả về lần lượt cho trình duyệt của người dùng hay là chỉ trả về khi dịch xong tất cả các script. Kết quả trả về này mặc định là một trang theo cấu trúc của ngôn ngữ HTML. 4.1.3. Ưu điểm và nhược điểm của ASP: Ưu điểm: ASP bổ sung cho các công nghệ đã có từ trước như CGI (Common Gateway Interface), giúp người dùng xây dựng các ứng dụng web với những tính năng sinh động. Tuy nhiên, khác với CGI, các trang ASP không cần phải hợp dịch. Dễ dàng tương thích với các công nghệ của Microsoft. ASP sử dụng ActiveX Data Object (ADO) để thao tác với cơ sở dữ liệu hết sức tiện lợi. Với những gì ASP cung cấp, các nhà phát triển ứng dụng web dễ dàng tiếp cận công nghệ này và nhanh chóng tạo ra các sản phẩm có giá trị. Điều này hết sức có ý nghĩa trong điều kiện phát triển như vũ bão của tin học ngày nay. Nó góp phần tạo nên một đội ngũ lập trình web lớn mạnh. ASP có tính năng mở. Nó cho phép các nhà lập trình xây dựng các component và đăng ký sử dụng dễ dàng. Hay nói cách khác ASP có tính năng COM ( Component Object Model). Nhược điểm: ASP chỉ chạy và tương thích trên môi trường Windows, điều này làm ASP bị hạn chế rất nhiều. Dùng ASP chúng ta sẽ gặp không ít khó khăn trong việc can thiệp sâu vào hệ thống như các ứng dụng CGI. ASP không được sự hỗ trợ nhiều từ các hãng thứ ba. Các ứng dụng ASP chạy chậm hơn công nghệ Java Servlet. Tính bảo mật thấp. Không giống như CGI hay Java Servlet, các mã ASP đều có thể đọc được nếu người dùng có thể truy cập vào web server. Có lẽ đây là lý do quan trọng nhất để người dùng không chọn công nghệ ASP. 4.2.HTML: HTML (HyperText Markup Language) là hàng loạt các đoạn mã chuẩn với các quy ước được thiết kế để tạo ra trang web, giúp tạo và chia sẻ các tài liệu điện tử tích hợp đa phương tiện qua Internet và được hiển thị bởi những trình duyệt Web. HTML là nền tảng của World Wide Web, một dịch vụ toàn cầu của Internet. Web là dịch vụ mang tính đồ họa cao trong các dịch vụ Internet, cho phép ngườI dùng có thể tự tạo cho riêng mình họ những trang Web. HTML cho phép áp dụng siêu liên kết cho tài liệu và trình bày tài liệu với phông chữ, hình ảnh, phù hợp với hệ thống hiện thị văn bản. HTML không phải ngôn ngữ lập trình. Thay vào đó, tạo các trang Web thường nói đến như authoring (sáng tác) và đơn giản hơn nhiều so với việc tạo ra các ứng dụng trên máy tính. Có nhiều trình soạn thảo HTML và Web khác nhau như:NotePad, InternetExplorer, Microsoft FontPage, DreamWeaver có cung cụ soạn thảo đơn giản cho phép tạo và hiệu chỉnh tập tin HTML. HTML tạo trang Web bằng cách sử dụng các thẻ quy ước như: Thẻ cấu trúc: Định rõ cấu trúc của tài liệu. Thẻ hình thức văn bản: Định rõ dạng hiển thị văn bản. Thẻ đoạn văn bản: Định rõ tiêu đề, đoạn và dấu ngắt dòng. Thẻ phông chữ: Định rõ cỡ chữ và màu chữ. Thẻ danh sách: Định rõ các danh sách theo thứ tự hoặc không theo thức tự và danh sách định nghĩa. Thẻ bảng biểu: Xác định bảng tiêu chuẩn. Thẻ liên kết: Định rõ các liên kết định hướng di chuyển đến tài liệu khác. Thẻ hình ảnh: Định rõ vị trí truy cập hình ảnh và cách hiển thị hình ảnh Một số tag thường dùng như sau: Tag ý nghĩa Khai báo data được viết bằng HTML … Miêu tả Header của trang Web … Tiều đề trang Web … Thân trang Web … Lập thành bảng … Lập theo dòng … Lập theo cột … Mức tiều đề cấp n (từ 1 đến 6) … In đậm … In nghiêng … Gạch dưới … Danh sách hông có thứ tự. … Danh sách có thứ tự … Danh sách ngang. … Phần tử của danh sách. … Xuống dòng ảnh tĩnh (.gif,.jpg) Hyperlink … Dữ liệu không format lại … Tạo một applet 4.3 NGÔN NGữ LậP TRìNH VBSRIPT 4.3.1 Giới thiệ về VBScript VBScript là một thành phần mới nhất trong họ ngôn ngứ lập trình Visual Basic, cho phép tạo ra những script sử dụng được trên nhiều môi trường khác nhau như các script chạy trên Browser của client ( Ms Internet Explorer 6.0) hay trên Web Server (Ms Internet Information Server 5.0). Cách viết VBScript tương tự như cách viết các ứng dụng trên Visual Basic hay Visual Basic for Application. VBScript giao tiếp với các ứng dụng chủ (host application) bằng cách sử dụng các Active X Scripting. 4.3.2 Các kiểu dữ liệu của VBScript VBScript chỉ có một loại dữ liệu được gọi là Variant. Variant là một kiểu dữ liệu đặc biệt có thể chứa đựng những loại thông tin khác nhau tùy theo cách sử dụng. Dĩ nhiên nó cũng là kiểu dữ liệu được trả về bởi tất cả các hàm. ở đây đơn giản nhất một Variant có thể chứa thông tin số hoặc chuỗi tùy theo văn cảnh sử dụng. Các loại dữ liệu (subtype) mà Variant có thể biểu diễn là: Empty, null, boolean, byte, currency, date, time, string, error VBScript có sẵn một số hàm để chuyển từ subtype, này sang subtype khác. 4.3.3 Biến trong VBScript Một biến là một tên tham khảo đến một vùng nhớ, là nơi chứa thông tin của chương trình mà thông tin này có thể được thay đổi trong thời gian script chạy. Ví dụ: có thể đặt một biến tên là ClickCount để đếm số lần user click vào một object trên một trang Web nào đó. Vị trí của biến trong bộ nhớ không quan trọng, ta chỉ truy xuất đến nó thông qua tên mà thôi. Trong VBScript biến luôn có kiểu là Variant. Khai báo biến: dùng phát biểu Dim, Public(cho biến toàn cục) hay Private(cho biến cục bộc). Tên biến phải bắt đầu bằng một kí tự chữ, trên tên biến không chứa dấu chấm, chiều dài tối đa là 255 kí tự và 1 biến là duy nhất trong phạm vi mà nó được định nghĩa. Biến trong VBScript có thể là đơn hay là dãy. Khi khai báo Dim A(10) thì VBScript tạo ra một dãy có 11 phần tử (vì phần tử đầu có chỉ số là 0v). Một dãy biến có thể mở rộng tối đa đến 60 chiều, nhưng thường dùng từ 2 đến 4 chiều. Có thể thay đổi kích thước một dãy trong thời gian chạy bằng cách dùng phát biểu ReDim. Ví dụ: Dim MyArray(25) … ReDim MyArray(30) hay ReDim Preserve MyArray(30) giữ lại các giá trị trong dãy cũ 4.3.4 Hằng trong VBScript Hằng là một tên có nghĩa đại diện cho 1 số hay chuỗi và không thể thay đổi trong quá trình chạy. Tạo một hằng bằng phát biểu Const. Ví dụ: Const MyString=” ây là các chuỗi 4.3.5 Các toán tử trong VBScript Độ ưu tiên của các toán tử VBScript có các toán tử khác nhau như số học, luận lý, so sánh. Nếu muốn chỉ định thứ tự ưu tiên của toán tử một cách rõ ràng thì dùng dấu ngoặc ( ), còn không thì thứ tự ưu tiên như sau (từ trên xuống dưới, từ trái sáng phải): Số học: ^, - (âm), * (nhân), / (chia), mod, +, & So sánh: =, , ,=, is Luật lý: Not, And, Or, Xor, Eqv, Imp Toán tử * và /, +,- có cùng đọ ưu tiên và được thực hiện từ trái sang phải b. Bảng các toán tử Toán học So sánh Logic Diễn giải Kí hiệu Diễn giải Kí hiệu Diễn giải Kí hiệu Mũ ^ So sánh bằng = Phủ định Not Đ ảo dấu - So sánh khác Phép và And Nhân * So sánh nhỏ hơn < Phép hoặc Or Chia / So sánh lớn hơn > Phép Xor Xor Chia nguyên \ Nhỏ hơn hoặc bằng <= Tương đương Eqv Phần dư Mod Lớn hơn hoặc bằng >= Cộng + So sánh 2 đối tượng Is Trừ - Nối chuỗi & 4.3.6 Các cấu trúc điều khiển If then Else Nếu ta muốn chạy một lệnh đơn khi điều khiển If là đúng thì ta chỉ sử dụng một lệnh If then Nếu muôn thực thi nhiều hơn một dòng lệnh thì phải sử dụng End IF Ta cúng có thể dùng If then Else để xác định thực thi một trong 2 khối lệnh. Một khối thực thi khi điều khiển If là True. Khối còn lại thực thi khi điều kiện If là False. Select case: cho phép lựa chọn nhiều trường hợp để ra quyết định thực thi. Do Loop: Lặp trong khi hoặc cho đến khi điều kiện là True. While End: Lặp trong hi điều kiện kiểm tra của While còn đúng. For Next: Lặp lại với số lần xác định For Each Next: Lặp với các phần tử trong tập hợp. Exit Do: Thoát khỏi vòng lặp Do Loop. Exit For: Thoát khỏi vòng lặp For Next. 4.3.7 Hàm và thủ tục trong VBScript Thủ tục Chúng ta dùng cú pháp Sub End. Sub để khai báo thủ tục trong VBScript. Cú pháp function End. Function được dùng để khai báo hàm. Ví dụ: <% ‘Xây dựng hàm chuyển đổi độ C sang độ F Function celsius(fDegrees) Celsius=(fDegrees-32)*5/9 End Function Thủ tục chuyển đổi Sub covertTemp() Response.Writer The remperature is & Celsius(95) & degrees C.” End Sub ‘Triệu gọi thủ tục call ConvertTemp %> Cách dùng Sub và Function Function phải luôn được đặt bên phải của phép gán. Ví dụ: Temp= Celsius(fDegrees) Hoặc: MsgBox The Celsius temperature is Celsius(fDegrees) degrees Để gọi một Sub từ một Procedure khác, ta gõ tên của Sub kèm theo các đối số mà không cần dấu ngoặc. Nếu dùng lệnh Call, ta phải đặt các đối số trong dấu ngoặc. Ví dụ: Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg 4.4 Sử DụNG ADO ĐÊ TRUY NHậP Dữ LIệU ADO (Access Data Object) là đối tượng Active X truy nhập dữ liệu mới nhất mà Microsoft đưa ra nhằm hỗ trợ tích cực cho việc tương tác với dữ liệu qua bất kì một nhà cung cấp dữ liệu nào (DB Provider). ADO cho phép viết các ứng dụng truy nhập dữ liệu từ các nguồn dữ liệu OLE DB, bao gồm các nguồn dữ liệu ODBC. Việc kết nối ODBC thông qua các driver cơ sở dữ liệu, là các chương trình đưa thông tin từ ứng dụng Web tới cơ sở dữ liệu, là các chương trình đưa thông tin từ ứng dụng Web tới cơ sở dữ liệu. Việc kết nối này sử dụng tên nguồn dữ liệu DSN (Data Souce Name). DSN chứa những thông tin về bảo mật, việc tham chiếu tới cơ sở dữ liệu vật lý. Khi sử dụng ADO với ASP, mọi truy xuất dữ liệu và thao tác được thực hiện trên Server. 4.4.1 Mô hình ADO Mỗi đối tượng Connection, Command, Recordset và field đều có Properties. Fields Recordset Paramenters Command Errors Connection Mô hình ADO 4.4.2 Các thành phần của ADO Đối tượng là một nhóm các hàm và biến. Một số đối tượng đã được xây dựng sẵn và có thể sử dụng ngay mà không cần khởi tạo: Request, Response, Session, Application, Server. Một số đối tượng cần khởi tạo nếu muốn sử dụng Dictionary, Connection, Recordset... 4.4.3 Đối tượng Request Request và Response là 2 đối tượng được dùng nhiều nhất trong lập trình ASP, dùng trao đổi dữ liệu giữa trình duyệt và server. Request cho phép lấy về các thông tin từ client. Khi browser gửi một yêu cầu trang web lên server ta gọi là 1 request Chúng ta thường sử dụng các lệnh request sau: 4.4.3.1 Request.QueryString Cho phép server lấy về các giá trị được gửi từ người dùng qua URL hoặc form (method GET). Ví dụ ở trang home.asp chúng ta đặt một dòng liên kết sang trang Products.asp với thẻ sau: Nhấn vào đây để sang trang Products.asp biến cid có giá trị là TAP được người dùng gửi tới server kèm theo URL. (người dùng có thể gõ thẳng địa chỉ trên thanh Address của trình duyệt) Server muốn nhận lại giá trị này thì dùng request.QueryString ở trang default.asp <%dim a a=request.querystring(“BookName) response.write Tên sách &a %> Tương tự như vậy nếu người dùng gửi giá trị Nghệ thuật trang trí nhà cửathông qua một biến trong form và chọn method GET 4.4.3.2 Request.Form Cho phép server lấy về các giá trị được gửi từ người dùng qua form (method POST). Chẳng hạn file FeedBack.asp: File product.asp làm nhiệm vụ xử lý thông tin từ Form này sẽ dùng câu lệnh request.form để nhận lại thông tin người dùng đã gõ vào: <%Dim x x=Request.form(name) %> response.write Tên người viết &x %> 4.4.4 Response Đối tượng Response dùng để gửi các đáp ứng của server cho client. Chúng ta thường dùng một số lệnh Response sau: 4.4.4.1 Response.Write Đ ưa thông tin ra màn hình trang web Ví dụ để đưa câu chào Hello ra màn hình ta dùng lệnh sau: Hiển thị thời gian trên server ra màn hình: hoặc now là hàm lấy ngày giờ hệ thống trên server 4.4.4.2 Response.Redirect Chuyển xử lý sang một trang Asp khác. Ví dụ trang xulyform.asp sau khi kiểm tra form đăng nhập thấy người dùng không có quyền vào website thì nó sẽ chuyển cho file Error.asp(file này hiển thị một thông báo lỗi user không có quyền truy cập) 4.4.4.3 Response.End Ngừng xử lý các Script. Dùng lệnh này khi muốn dừng xử lý ở một vị trí nào đó và bỏ qua các mã lệnh ASP ở phía sau. Đ ây là cách rất hay dùng trong một số tình huống, chẳng hạn như debug lỗi 4.4.4.4 Đối tượng Session Session là một phiên làm việc giữa từng người dùng và web server, nó bắt đầu khi người đó lần đầu tiên truy cập tới 1 trang web trong website và kết thúc khi người đó rời khỏi website hoặc không tương tác với website trong một khoảng thời gian nhất định (time out). Như vậy tại một thời điểm một website có bao nhiêu người truy cập thì có bấy nhiêu phiên ứng với mỗi người, các phiên này độc lập nhau. Để lưu những thông tin tác dụng trong 1 18 ASP phiên, người ta dùng đối tượng Session, ví dụ khi một user bắt đầu session với việc login vào hệ thống, và user đã login đó cần được hệ thống ghi nhớ trong toàn phiên làm việc (nhằm tránh việc người dùng phải đăng nhập lại mỗi khi đưa ra một request).Giá trị của biến kiểu session có phạm vi trong tất cả các trang ASP của ứng dụng, nhưng không có tác dụng đối với phiên làm việc khác. Ví dụ, sử dụng biến session sau đây đếm số lần 1 người đã truy cập vào trang web: Default.asp session(xx”) đại diện cho số lần mà một user đã truy cập vào trang home.asp. Với 2 người dùng khác nhau thì giá trị session (xx”) lại khác nhau. Thật vậy, A có thể truy cập 10 lần (session(xx”) =10) trong khi B có thể truy cập 2 lần thôi (session(xx”) =2) Server kết thúc và hủy bỏ đối tượng session khi: - Người dùng không triệu gọi các trang của ứng dụng hoặc cập nhật làm mới (refresh) lại thông tin của trang trong một thời gian nhất định. Khi một session hết thời gian hiệu lực nó sẽ được xem như hết hạn sử dụng, tất cả các biến lưu trong session và bản thân session sẽ bị hủy bỏ. Có thể kiểm tra và tăng giảm thời gian Timeout của Session tính bằng giây như sau: <% Session.Timeout = 500 %> - Trang ASP gọi đến phương thức Abandon của Session . <% Session.Abandon %> 4.4.4.5 Đối tượng Application Application đại diện cho toàn bộ ứng dụng, bao gồm tất cả các trang web trong website. Để lưu trữ những thông tin có tác dụng trong toàn ứng dụng, tức là có giá trị trong tất cả các trang asp và tất cả các phiên, người ta dùng đối tượng Application Điểm khác của biến application so với biến session là session chỉ có tác dụng đối với mỗi phiên, còn biến application có tác dụng với mọi phiên. Ví dụ, để đếm xem có bao nhiêu người truy cập vào website, chúng ta có thể dùng một biến Application. Mỗi khi một người dùng mới truy cập vào website ta tăng biến này lên 1 đơn vị để chỉ rằng đã có thêm 1 người truy cập. Trang home.asp muốn hiển thị số người truy cập chỉ cần in giá trị của biến này <% response.write Số người đã truy cập vào website là:”&application(xx”) %> Với 2 phiên khác nhau thì giá trị application (xx”) là như nhau. Thật vậy, A và Chương 1: Giới thiệu ASP 19 B khi truy cập vào trang home.asp đều thấy: “Số người đã truy cập vào website là 3 (trong trường hợp application (xx”) =3) Việc khởi tạo và kết thúc 1 biến application có thể viết trong các hàm sự kiện Application_onStart và Application_onEnd được định nghĩa trong file global.asa Khóa Application: Do biến application có thể được dùng chung bởi nhiều phiên nên sẽ có trường hợp xảy ra xung đột khi có 2 phiên cùng thay đổi giá trị một biến application. Để ngăn chặn điều này chúng ta có thể dùng phương thức Application.lock để khóa biến application trước khi thay đổi nó. Sau khi sử dụng xong biến này có thể giải phóng khóa bằng phương thức application.unlock (xem ví dụ sau). 4.4.4.5 Đối tượng Dictionary Đối tượng Dictionary lưu trữ thông tin theo từng cặp khóa / giá trị. Nó khá giống với mảng nhưng có khả năng xử lý linh hoạt đối với những cặp dữ liệu có quan hệ kiểu từ điển (cặp khóa / giá trị ví dụ như: mã sách / tên sách), trong đó khóa được xem là từ cần tra và giá trị chính là nội dung của từ tra được trong từ điển. Muốn sử dụng đối tượng Dictionary chúng ta phải khởi tạo nó: <%set d=server.createObject("Scripting.Dictionary") d.add "work","Lam viec" d.add "learn","Hoc tap" tương tự như mảng nhưng mỗi phần tử là một cặp khóa/giá trị response.write "work nghĩa tiếng Việt là: "&d.item("work") response.write "learn nghĩa tiếng Việt là: "&d.item("learn") set d=nothing %> 4.4.5.1 Đối tượng Server Đối tượng Server được dùng để truy cập các thuộc tính và phương thức của server .Ta thường dùng 2 lệnh sau: 4.4.5.2 Server.CreateObject Khởi tạo 1 đối tượng. Ví dụ: Tạo một đối tượng Connection: Tạo một đối tượng Dictionary: 4.4.5.3 Server.Mappath biến đường dẫn tương đối thành tuyệt đối. Ví dụ: <%str= server.mappath("BS.mdb") Response.write str%> Sẽ cho kết quả: “C:\ BOOKSHOP \BS.mdb trong trường hợp file nhanvien.mdb nằm trong thư mục C:\WEB Ta thường áp dụng server.mappath trong những trường hợp xử lý đường dẫn tương đối, ví dụ là chuỗi kết nối vào database connstr="provider=microsoft.jet.oledb.4.0; data source="&server.mappath("BS.mdb")&";" 4.4.6 Sử dụng Database với ASP Hầu hết các ứng dụng Web động đều lưu trữ dữ liệu trong Database. Vì vậy các thao tác kết nối vào Database, xem, thêm, sửa, xóa dữ liệu trong các bảng là phần quan trọng đối với các ngôn ngữ lập trình web như ASP. Chúng ta sẽ học các kỹ thuật sử dụng Asp để thao tác với dữ liệu trong Database thông qua kiến trúc ADO. 4.4.6.1 Các cú pháp căn bản để truy xuất dữ liệu từ DB Để thao tác với dữ liệu trong các bảng của DB, có 4 thao tác chính với câu lệnh SQL tương ứng như sau: (Lấy ví dụ với một Database cụ thể BS.mdb, trong đó có một bảng tblBooks (ISBNNumber:text, BookName: Memo) 4.4.6.2 Lựa chọn Lấy tất cả các bản ghi trong bảng: “Select * from tblBooks Nếu lựa chọn có điều kiện: “Select * from tblBooks where ProductID = '" & cid & "' Nếu chỉ lựa chọn một số trường trong bảng: “Select BookName from tblBooks where ISBNNumber =’ 0089974 4.4.6.3 Thêm dữ liệu vào bảng “Insert into tblBooks values (001,NgoaiNgu) “ 4.4.6.4 Sửa dữ liệu “Update tblBooks set Ten=’S achhay where ISBNNumber =001 4.4.6.4 Xoá dữ liệu “Delete from tblBooks where ISBNNumber =001 Chúng ta có thể sử dụng các lệnh SQL phức tạp hơn để có được kết quả mong muốn như sử dụng các lệnh join, order by, group by, having... 4.4.6.3 Đối tượng Connection Đối tượng Connection cho phép tạo kết nối đến một DB. Các bước sử dụng Connection: - Khai báo đối tượng Connection - Khởi tạo - Tạo chuỗi kết nối - Mở Connection với chuỗi kết nối trên - Sử dụng Connection - Đóng và Hủy Connection Ví dụ sau đây kết nối đến database Access BS.mdb (database này nằm trong cùng thư mục với file Asp) <% dim conn khai báo set conn=server.createObject("ADODB.connection") khởi tạo stringconn="provider=microsoft.jet.OLEDB.4.0;data source="&server.mappath("BS.mdb")&";" chuỗi kết nối conn.open stringconn mở connection các thao tác với B sử dụng connection này ....... conn.close đóng connection Set conn=nothing hủy connection %> (chuỗi stringconn = viết trên 1 dòng, trong đó: data source = chú ý có một dấu cách giữa data và source, chuỗi này chỉ đúng với Access) 4.4.6.4 Đối tượng Recordset Đối tượng Recordset thường dùng để xem, thêm, sửa, xóa các bản ghi trong bảng dữ liệu của Database. Nó trỏ đến tập hợp các bản ghi là kết quả trả về từ câu lệnh select Các bước sử dụng đối tượng Recordset : - Khai báo đối tượng Recorset - Khởi tạo - Tạo sql query - Mở Recordset với chuỗi sql query và connection đã mở - Sử dụng Recordset - Đóng và Hủy Recordset Ví dụ sau đây cho phép lấy các bản ghi trong bảng và hiển thị ra ngoài trang web. <%Dim rs khai báo Recordset set rs=server.createObject("ADODB.Recordset") ‘Khởi tạo SQLstring="select * from tblBooks" SQL query rs.open SQLstring , conn ‘Mở Recordset dùng vòng lặp để hiển thị toàn bộ các bản ghi ra màn hình do while not rs.EOF response.write RS(“BookName) response.write RS(“AuthorID”) response.write RS(“PublisherID”) response.write RS(“Price) response.write ” rs.movenext dịch con trỏ rs tới bản ghi tiếp theo loop rs.close đóng recordset set rs=nothing hủy recordset %> Chúng ta có thể kết hợp giữa script và thẻ html để dữ liệu được hiển thị ra ngoài trang web với giao diện theo ý muốn: Ten Sach Tac Gia Nha XB Gia Bia <%rs.movenext loop rs.close %> Sau đây là một ví dụ hoàn chỉnh liệt kê các user trong bảng tblCustomers ra trang web: Connection.asp <% dim conn Sub openConn() set conn=server.createobject("adodb.connection") connstr="provider=microsoft.jet.oledb.4.0; data source="&server.mappath("BS.mdb")&";" conn.open connstr End Sub Sub destroyConn() conn.close set conn=nothing End Sub %> 4.4.6.5 Thêm sửa xóa dữ liệu trong DB: Với một connection đã mở chúng ta có thể dùng nó để thực thi câu lệnh SQL dạng insert, update, delete: Thêm dữ liệu: Sửa dữ liệu: <%Conn.execute Update tblBooks set Ten=’ Chu dịch dịch chú where ISBNNumber= ‘ISBNNumber %> Xoá dữ liệu: Ngoài ra chúng ta có thể dùng Recordset để thêm, sửa, xóa dữ liệu trong database bằng cách duyệt qua tập hợp các bản ghi trong bảng Thêm dữ liệu: <%Dim RS set rs=server.createObject("ADODB.recordset") SQLstring="select * from tblBooks" rs.open SQLstring ,conn,3,2 rs.open SQLstring ,conn,adOpenStatic,adLockPessimistic rs.addnew Thêm một bản ghi rs(“ISBNNumber)= 001 gán giá trị cho các trường của bản ghi rs(“BookName)=”Sách viễn tưởng rs.update Xác nhận thêm xong rs.close đóng recordset %> Sửa: <% set rs=server.createObject("ADODB.recordset") ‘Khởi tạo SQLString="select * from tblBooks where ISBNNumber=001 " ‘lấy ra bản ghi cần sửal rs.open SQLString ,conn,3,2 rs(“BookName)=”Sách khoa học sửa lại giá trị trường BookName rs.update xác nhận sửa xong rs.close đóng recordset %> Xóa: <% set rs=server.createObject("ADODB.recordset") ‘Khởi tạo SQLString="select * from tblBooks where ISBNNumber=001 " Cõu lệnh SQL lấy ra đúng bản ghi cần xóa rs.open SQLString ,conn,3,2 rs.delete xóa bản ghi này rs.close đóng recordset %> 4.4.6.6 Tìm kiếm dữ liệu trong database Để tìm kiếm dữ liệu trong bảng của Database chúng ta dựa vào câu lệnh SQL: sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) Ví dụ đoạn chương trình sau cho phép hiển thị những tên sách, tác giả,nhà xuất bản, giá bìa trong bảng “tblCustomers của DB “BS.mdb có tên được tìm kiếm bởi từ khoá Lập trình ứng dụng Pascal (Ví dụ: Lập trình Web, Người Việt Nam, Người Bắc Kinh ở New York) <% set conn=server.createobject("adodb.connection") connstring="provider=microsoft.jet.oledb.4.0;data source="&server.mappath("BS.mdb")&";" conn.open connstring set rs=server.createobject("adodb.recordset") rs.open " sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) ",conn do while not rs.eof response.write rs("customerid ") response.write " " response.write rs("username ") response.write " " response.write rs("Fullname") response.write " " response.write rs("City") response.write " " response.write rs("Lop") response.write "" rs.movenext loop rs.close %> Thông thường người sử dụng nhập từ khoá cần tìm kiếm vào một trường của form. như vậy ta chỉ việc dùng lệnh request.form để lấy lại từ khoá cần tìm kiếm và đưa vào câu lệnh SQL ở trên. Chẳng hạn người sử dụng nhập từ khoá cần tìm vào trường BookName trong form thì chúng ta sẽ mở bảng bằng câu lệnh SQL sau: sqlString = "SELECT * FROM tblBooks, tblBookCategories, tblPublishers, tblAuthors "&_ "WHERE tblBooks.Keyword LIKE '%" & searchfor & "%' AND tblBooks.CategoryID = tblBookCategories.CategoryID "&_ "AND tblBooks.PublisherID = tblPublishers.PublisherID AND tblBooks.AuthorID = tblAuthors.AuthorID" Nếu không tìm thấy bản ghi nào thì giá trị rs. EOF sẽ true. “Không có cuốn sách nào như thông tin tìm kiếm Chương 5 PHÂN TíCH THIếT Kế Hệ THốNG 5.1 YÊU CầU CủA WEBSITE Chức năng của Website là một hình thức thương mại điện tử B2C(Bussieness to Customer) Website có giao diện thân thiện với khách hàng, màu sắc hài hòa, sinh động, đảm bảo tính thẩm mỹ cao đúng phong cách của một website bán sách. Thông tin luôn được cập nhật và luôn đáp ứng được nhu cầu tìm kiếm thông tin. Bên cạnh đó tiết kiệm được thời gian và chi phí đi lại cho khách hàng. Dễ dàng nâng cấp và mở rộng hệ thống. Khi có nhu cầu triển khai, bổ sung các dịch vụ, ứng dụng mới của thương mại điện tử và các tiện ích khác thì có thể phát triển các dịch vụ, ứng dụng dựa trên công nghệ, hệ thống hiện tại. Đ ảm bảo tính thuận tiện trong sử dụng và an toàn thông tin cho khách hàng khi mua sách Hệ thống có khả năng quản trị thận tiện, dễ dàng. Người quản trị có thể theo dõi toàn bộ hoạt động của hệ thống 5.2 NộI DUNG WEBSITE 5.2.1 Trang chủ Trang chủ cho phép người dùng có khả năng truy cập tới một chuyên mục bất kì hoặc tìm kiếm các thông tin liên quan có trong Website. Nội dung của trang chủ gồm có những phần sau: Đ ăng nhâ p, Danh mục sách, Menu chính, Giỏ hàng, Thống kê Website, Tìm kiếm, Sách bán chạy, Sách mới. 5.2.2 Đ ăng nhập Khách hàng có thể đăng nhập userName của mình ở trang này khi bạn có một Account của mình, và bạn có thể bắt đầu tham gia vào gian hàng để mua những thứ mà bạn cần 5.2.3 Danh mục sách Cung cấp các mục sách cập nhật nhất hiện nay, ở đây bạn có thể chọn lựa những cuốn sách mà bạn ưa thích nhất để giao dịch với chúng tôi. 5.2.4 Menu chính Chứa các control điều khiển, giúp cho người mua hàng được thuận tiện hơn khi mua 5.2.5 Giỏ hàng Thông báo cho người mua biết được mình đang mua sách gì và số tiền là bao nhiêu 5.2.6 Tìm kiếm ở đây bạn có thể thuận tiện tìm những loại sách một cách nhanh nhất, khi bạn đã biết tên sách, nhà xuất bả n, tác giả . Chức năng này sẽ giúp bạn tìm một cách nhanh nhất mà bạn cần 5.2.7 Phản hồi Bạn có thể nói những ý kiến của mình ở đây, và những ý kiến của bạn sẽ được gửi lên cho ban quản trị. 5.2.8 Chức năng chính của Website Website được xây dựng để phục vụ cho 2 nhóm sau: Quản trị hệ thống Khách mua hàng a. Quản trị hệ thống Quản trị hệ thống là người làm chủ website, họ có quyền kiểm soát mọi hoạt động của hệ thống. Để chức năng của mình thì họ phải đăng nhập vào hệ thống bằng username và password: Chức năng của người quản trị đối với sách: Thêm sách Thêm nhà xuất bản Thêm tên tác giả Thêm loại sách Chức năng của người quản trị xem kho hàng: Xem nhà xuất bản Xem tác giả Xem loại sách Xem sách Chức năng của người quản trị về khách hàng: Hiển thị thông tin khách hàng Chức năng của người quản trị về đơn đặt hàng Hiện thị thông tin các đơn đặt hàng của khách Chức năng của người quản trị đối với phản hồi của khách hàng Xóa bài viết đó nếu không phù hợp b. Khách mua hàng Khách mua hàng là những người vào hệ thống để tìm kiếm các sản phẩm mua và đặt hàng với hệ thống Trang phục vụ khách hàng phải thỏa mãn các chức năng sau: Hiển thị các thông tin liên quan đến cuốn sách mà khách hàng cần tìm (tên sách, tác giả, giá tiền, nhà xuất bản) Tìm kiếm theo tên, tác giả, chuyên nghành, nhà xuất bản Tạo feedback để khách hàng trao đổi ý kiến Đặt hàng cho khách hàng muốn mua tranh 5.3 PHÂN TíCH THIếT Kế Hệ THốNG 5.2.1 Sơ đồ phân cấp chức năng Website Đăng Nhập Danh mục sỏch Chọn sỏch Tỡm kiếm Giỏ mua hàng Thanh toỏn Quản trị Quản lý sỏch Thoỏt 5.2.2 Luồng dữ liệu Biểu đồ luồng dữ liệu là một phương pháp mô tả hệ thống thông tin dưới hình học, cho phép diên tả các luồng dữ liệu thông qua các chức năng của hệ thống. Nó là một công cụ trợ giúp cho quá trình phân tích, thiết kế, làm tài liệu trao đổi giữa những người làm phân tích thiết kế. Những kí hiệu trong mô hình luồng dữ liệu: Luồng dữ liệu Cơ sở dữ liệu Chức năng Thực thể Khỏch hàng Hệ thống bỏn hàng của Website Mua hàng Bỏn hàng Biểu đồ luồng dữ liệu mức ngữ cảnh GalleryShop Thống kờ Ghi Chọn Tỡm kiếm Chọn Đồng ý thanh toỏn Ghi/Sửa/Xúa Khỏch hàng Tỡm kiếm CSDL Sỏch Chọn mua Thống kờ Thanh toỏn Giỏ mua hàng CSDL Khỏch hàng CSDL Đơn hàng Sơ đồ luồng dữ liệu mức đỉnh GalleryShop Thụng tin đặt hàng Chi tiết húa đơn Khỏch hàng Húa đơn bỏn hàng Thụng tin đặt hàng Lập húa đơn CSDL Sỏch Đơn đặt hàng Sơ đồ phân rã chức năng Gallery Shop CHƯƠNG 6 THIếT Kế CƠ Sở Dữ LIệU 6.1 THIếT Kế CáC THựC THể 6.1.1 tblBooks: ISBNNumber BookName PublisherID CategoryID Pages Quantity PublishYear AuthorID EditionNumber Price PictureURL Keyword BookBrief TableOfContent DateInsert 6.1.2 tblCustomers: CustomerID Username Password Fullname Sex Email Address City Phone Habit 6.1.3 tblAuthors: AuthorID AuthorName AuthorEmail AuthorWebsite AuthorBio 6.1.4 tblBookCategories: CategoryID ClassName CategoryName 6.1.5 tblFeedback: FeedbackID CustomerName CustomerEmail Comment FeedbackDate 6.1.6 tblOrderDetails: OrderID ISBNNumber Price Quantity Total Discount 6.1.7 tblOrders: OrderID CustomerID OrderDate StatusID 6.1.8 tblPublishers: PublisherID PublisherName Address Phone Email Website 6.1.9 tblStatus: StatusID StatusName 6.2 Các mối liên kết thực thể 6.2.1 Xét 2 thực thể tác giả và sách: Mỗi sách chỉ có một tác giả duy nhất, trong khi một tác giả thì có nhiều sách khác nhau Tác giả: Author Mã tác giả: aut Mã sách: bid tblBooks(#bid) TblAuthor(#aut) 6.2.2 Xét hai thực thể khách hàng và đơn hàng: Mỗi một đơn hàng chỉ dành cho một khách hàng. Ngược lại ta thấy một khách hàng có thể có nhiều đơn hàng vì khách hàng có thể mua rất đặt mua rất nhiều sách khác nhau. Khách hàng: Customer Đ ơn hàng: Order Mã khách hàng: id Mã đơn hàng: vieworder tblCustomers(#id) tblOrders(#vieworder) 6.2.3 Xét hai thực thể Sách và Đ ơn hàng: Mỗi sách có thể có một hoặc nhiều phiếu nhập đơn hàng khác nhau. Mặt khác thì đơn hàng có thể có nhiều sách. Mã sách: bid Mã đơn hàng: vieworder tblOrder(#vieworder) tblBooks(#bid) 6.3 SƠ Đồ LIÊN KếT CáC THựC THể 6.4 XÂY DựNG CáC BảNG CƠ Sở Dữ LIệU 6.4.1 Bảng tblAuthor(tác giả): 6.4.2 Bảng tblBookCategories(phân loại sách): 6.4.3 Bảng tblBooks(sách): 6.4.5 Bảng tblCustomers(khách hàng): 6.5.5 Bảng tblFeedBack(phản hồi): 6.5.6 Bảng tblOrder(đơn hàng): 6.5.7 Bảng tblOrderDetails(chi tiết đơn hàng): 6.5.8 Bảng tblPublishers(nhà xuất bản): 6.5.9 Bảng tblStatus(trạng thái đơn hàng): Chương 7 KếT QUả CàI ĐặT WEBSITE 7.1 MộT Số GIAO DIệN CHíNH 7.1 Trang chủ 7.2. ăng Ký 7.3. ăng Nhập 7.4.Thông tin sản phẩm 7.5.Giỏ mua hàng 7.6.Phản hồi 7.7.Quản trị đăng nhập 7.8.Xem thông tin sản phẩm 7.9.Xem thông tin nhà xuất bản 7.10.Xem đơn đặt hàng 7.11.Sửa thông tin đơn đặt hàng 7.12.In đơn đặt hàng 7.13.Thông tin khách hàng 7.14.Sửa thông tin khách hàng 7.2 Cc on m chng trnh 7.2.1 Trang default.asp <%Session.CodePage = 65001 cid = Request("cid") IF Session("fullname") = "" THEN username = Request("username") password = Request("password") sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) IF NOT RSLog.EOF THEN Session("fullname") = RSLog("Fullname") Session("username") = RSLog("Username") Session("city") = RSLog("City") Session("id") = RSLog("CustomerID") RSLog.Close END IF END IF %> <% If Session("default") = "" THEN Set fs = Server.CreateObject("Scripting.FileSystemObject") Set textFile = fs.OpenTextFile(Server.MapPath("counter.txt"),1,true) while not textFile.AtEndOfStream count = textFile.readLine Wend textFile.close count = cInt(count) + 1 Set fs = Server.CreateObject("Scripting.FileSystemObject") Set textFile = fs.OpenTextFile(Server.MapPath("counter.txt"),2,false) counter = textFile.writeLine(count) textFile.close Application("counter") = count Session("default") = "true" END IF %> "" THEN%> [Thot ] Xin chào ! Hi vọng bạn tìm được những cuốn sách hay! <% If Session("fullname") = "" Then %> <% END IF %> Xin chào mừng bạn đã đến với trang web mua bn sch tại Việt Nam. Chóng ti mong muốn đem lại cho các bạn những cuốn sách mới nhất, chất lượng nhất với một giá cả phù hợp với túi tiền của bạn. Nếu có nhu cầu tìm sách mà chưa có tại website, bạn hãy liên hệ với chúng tôi. Trợ giúp " ở menu chính. Mọi chi tiết xin liên hệ: Email : support@ibs.vn Chóng ti kiểm tra mail 3 ln mét ngy và sẽ cố gắng trả lời nhanh nhất cho bạn. <% sqlString = "SELECT Top 3 * FROM tblBooks WHERE BookBrief ''" Set RS = Con.execute(sqlString) WHILE NOT RS.EOF %> <IMG alt="" border=0 height=2 src="a/blank.gif" width=1 align = "center"> <TD background="a/osdn_navbar.gif" bgColor=#dddddd height=20 width="427" align="center"> <IMG alt="" border=0 height=1 src="a/blank.gif" width=1> <IMG alt="" border=0 height=1 src="a/blank.gif" width=250> <IMG alt="" border=0 height=1 src="a/blank.gif" width=250> <IMG alt="" border=0 height=1 src="a/blank.gif" width=250> <TD background="div_grad_blue(1).gif" bgColor=#003399 width="427"><IMG alt="" border=0 height=1 src="a/blank.gif" width=1> &bid=> width = 78 height = 98 border = "0"> ... <font face="Verdana,Helvetica,Sans-serif" style = "font-size:8pt  &bid=>Chi tiết <% RS.MoveNext WEND RS.Close %> 7.2.2 Sản phẩm <% Session("previouspage") = "" Session("cid") = "" Session("searchfor") = "" Session("searchby") = "" %> <%Session.CodePage = 65001 IF Session("fullname") = "" THEN username = Request("username") password = Request("password") sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) IF NOT RSLog.EOF THEN Session("fullname") = RSLog("Fullname") Session("username") = RSLog("Username") Session("city") = RSLog("City") Session("id") = RSLog("CustomerID") RSLog.Close END IF END IF %> "" THEN%> [">Thoát] Xin chào ! Hi vọng bạn tìm được những cuốn sách hay! <% If Session("fullname") = "" Then %> <% END IF %>   <% cid = Trim(Request("cid")) pg = cInt(Request("pg")) IF pg = 0 THEN pg = 1 sqlString = "SELECT * FROM tblBooks, tblBookCategories, tblPublishers, tblAuthors "&_ "WHERE tblBooks.CategoryID = '" & cid & "' AND tblBookCategories.CategoryID = '" & cid & "'"&_ "AND tblBooks.PublisherID = tblPublishers.PublisherID AND tblBooks.AuthorID = tblAuthors.AuthorID" Set RSBook = Server.CreateObject("ADODB.Recordset") RSBook.ActiveConnection = Con RSBook.CursorType = adOpenStatic RSBook.PageSize = 5 RSBook.Open sqlString RSBook.AbsolutePage = pg %> <IMG alt="" border=0 height=2 src="a/blank.gif" width=1 align = "center"> <TD background="a/osdn_navbar.gif" bgColor=#dddddd height=20 width="430" align="center"> Thể loại: >> <IMG alt="" border=0 height=1 src="a/blank.gif" width=1> <IMG alt="" border=0 height=2 src="a/blank.gif" width=250> <IMG alt="" border=0 height=1 src="a/blank.gif" width=250> <IMG alt="" border=0 height=1 src="a/blank.gif" width=250> <TD background="div_grad_blue(1).gif" bgColor=#003399><IMG alt="" border=0 height=1 src="a/blank.gif" width=1> <% WHILE NOT RSBook.EOF AND rowCount < RSBook.PageSize rowCount = rowCount + 1 %> &bid="> " width = "62" height = "85" border = 0> Tên sách: &bid="> Tác giả: &bid="> Xem chi tiết Nhà XB: > "> "> "> Giá bìa: đ > <% RSBook.MoveNext WEND %> 1 THEN %> Trang: <% FOR i = 1 TO RSBook.PageCount IF i pg THEN %> &pg="> <%END IF NEXT RSBook.Close END IF%>   7.2.3 Đăng nhập function checkLogin() { var un = document.form2.username.value; var pw = document.form2.password.value; var s = "" if (un == "") s = "Bạn chưa nhập tên truy nhập"; if (pw == "") s += "\nBạn chưa nhập mật khẩu"; if (s != "") { alert(s); return false; } else return true; } <%Session.CodePage = 65001 cid = Request("cid") IF Session("fullname") = "" THEN username = Request("username") password = Request("password") sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) IF NOT RSLog.EOF THEN Session("fullname") = RSLog("Fullname") Session("username") = RSLog("Username") Session("city") = RSLog("City") Session("id") = RSLog("CustomerID") RSLog.Close END IF END IF %> <% Application.Lock Application("counter") = Application("counter") + 1 Application.Unlock %> "" THEN%> [Thoát] Xin chào ! Hi vọng bạn tìm được những cuốn sách hay! <% If Session("fullname") = "" Then %> <% END IF %> <% cid = Trim(Request("cid")) previouspage = Request.QueryString("previouspage") previouspage2 = Request("previouspage2") IF Session("checkout") THEN previouspage = "checkout.asp" END IF b = Session("vieworder") IF b = "" THEN b = false END IF IF b THEN previouspage = "vieworder.asp" END IF IF Session("iscart") = "" AND previouspage = "" THEN previouspage = "default.asp" END IF IF Session("iscart") "" THEN previouspage = "sessioncart.asp" Session("iscart") = "" END IF %> Bạn hãy Đ ăng nhập hoặc ăng ký   name = "form2" onSubmit = "return checkLogin();"> Đ ăng nhập Tên truy nhập: Mật khẩu: "> "> "> > 7.2.4 Đăng kí function checkLogin() { var un = document.form2.username.value; var pw = document.form2.password.value; var s = "" if (un == "") s = "Bạn chưa nhập tên truy nhập"; if (pw == "") s += "\nBạn chưa nhập mật khẩu"; if (s != "") { alert(s); return false; } else return true; } <%Session.CodePage = 65001 cid = Request("cid") IF Session("fullname") = "" THEN username = Request("username") password = Request("password") sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) IF NOT RSLog.EOF THEN Session("fullname") = RSLog("Fullname") Session("username") = RSLog("Username") Session("city") = RSLog("City") Session("id") = RSLog("CustomerID") RSLog.Close END IF END IF %> <% Application.Lock Application("counter") = Application("counter") + 1 Application.Unlock %> "" THEN%> [Thoát] Xin chào ! Hi vọng bạn tìm được những cuốn sách hay! <% If Session("fullname") = "" Then %> <% END IF %> <% cid = Trim(Request("cid")) previouspage = Request.QueryString("previouspage") previouspage2 = Request("previouspage2") IF Session("checkout") THEN previouspage = "checkout.asp" END IF b = Session("vieworder") IF b = "" THEN b = false END IF IF b THEN previouspage = "vieworder.asp" END IF IF Session("iscart") = "" AND previouspage = "" THEN previouspage = "default.asp" END IF IF Session("iscart") "" THEN previouspage = "sessioncart.asp" Session("iscart") = "" END IF %> Bạn hãy Đ ăng nhập hoặc ăng ký   name = "form2" onSubmit = "return checkLogin();"> Đ ăng nhập Tên truy nhập: Mật khẩu: "> "> "> > 7.2.4 Admin <% IF Session("admin") = "" THEN username = Request("username") password = Request("password") IF username = "quangtrung" AND password = "trung" THEN Session("admin") = username END IF END IF IF Session("admin") "" THEN %> <TABLE border= 0 cellPadding=0 cellSpacing=0 width="775" bgcolor = "white" style="border-style:solid; border-width:0; border-collapse: collapse; padding-left:0; padding-right:0; padding-top:0; padding-bottom:0" bordercolor="#BBBBBB" height="515"> <TABLE border= 0 cellPadding=0 cellSpacing=0 width="620" bgcolor = "white" style="border-style:solid; border-width:0; border-collapse: collapse; padding-left:0; padding-right:0; padding-top:0; padding-bottom:0" bordercolor="#BBBBBB" height="515"> <%ELSE Response.Redirect "adminlogin.asp" %> 7.2.5 xem n t hng <%Session.CodePage = 65001 cid = Request("cid") IF Session("fullname") = "" THEN username = Request("username") password = Request("password") sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) IF NOT RSLog.EOF THEN Session("fullname") = RSLog("Fullname") Session("username") = RSLog("Username") Session("city") = RSLog("City") Session("id") = RSLog("CustomerID") RSLog.Close END IF END IF %> "" THEN%> [Thoát] ơn đặt hàng của ! Quay về trang chủ <% If Session("fullname") = "" Then %> <% END IF %> <%Session.CodePage = 65001 Session("vieworder") = true previouspage = Request("previouspage") IF Session("fullname") = "" THEN username = Request("username") password = Request("password") sqlString = "SELECT customerid, username, password, fullname, city FROM tblCustomers "&_ "WHERE username = '" & username & "' AND password = '" & password & "'" Set RSLog = Con.execute(sqlString) IF NOT RSLog.EOF THEN Session("fullname") = RSLog("Fullname") Session("id") = RSLog("CustomerID") Session("username") = RSLog("Username") Session("city") = RSLog("City") END IF RSLog.Close END IF %> <%IF Session("fullname") = "" THEN Response.Redirect "login.asp" Response.END END IF %> <% sqlString = "SELECT tblOrders.OrderID, tblOrders.CustomerID, tblOrders.OrderDate, tblOrders.StatusID, tblOrderDetails.OrderID, tblOrderDetails.ISBNNumber, tblOrderDetails.Quantity, "&_ "tblOrderDetails.Total, tblOrderDetails.Discount, tblBooks.ISBNNumber, tblBooks.BookName, tblStatus.StatusID, tblStatus.StatusName FROM "&_ "tblOrders, tblOrderDetails, tblBooks, tblStatus WHERE tblOrders.CustomerID = " & Session("id") & " AND tblOrders.OrderID = tblOrderDetails.OrderID AND tblOrders.StatusID = tblStatus.StatusID "&_ "AND tblOrderDetails.ISBNNumber = tblBooks.ISBNNumber" Set RSOrder = Server.CreateObject("ADODB.Recordset") RSOrder.ActiveConnection = Con RSOrder.Open sqlString %> Bạn chưa có đơn đặt hàng nào Ngày Sách Slượng Thành tiền Giảm giá Trạng thái <%WHILE NOT RSOrder.EOF %> //      đ đ   <% RSOrder.MoveNext WEND RSOrder.Close %> <% END IF %>

Các file đính kèm theo tài liệu này:

  • docDAN043.doc