Bảng scrab_city dùng để lưu các thành phố/ tỉnh thành của Việt Nam. Vì khách hàng của giaquatot.com chỉ hướng đến người dùng tại Việt Nam. Ví dụ: Hà Nội, Đà Nẵng, Hồ Chí Minh…
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã Thành phố Khóa chính 2 ten varchar 32 Tên thành phố
3 thu_tu int 11 Dùng để sắp xếp vị trí
4 hien_thi int 1 Trạng thái
Bảng 3.3 Lưu danh sách thành phố Việt Nam 3.2.4 Bảng: scrab_district (Lưu danh sách quận/huyện)
Dùng để lưu Quận/huyện thuộc Thành phố. Ví dụ: Q.Hai Châu thuộc Thành phố Đà Nẵng có Mã Thành phố là 19.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã quận / huyện Khóa chính 2 city_id int 11 Mã Thành phố Khóa phụ 3 ten varchar 32 Tên quận huyện
4 thu_tu int 11 Dùng để sắp xếp vị trí
5 hien_thi int 1 Trang thái hiển thị
Bảng 3.4 Lưu danh sách quận huyện 3.2.5 Bảng: scrab_user (Lưu danh sách thành viên).
Bảng scrab_user dùng để lưu thông tin thành viên bao gồm tài khoản của người quản trị, người tiêu dùng, doanh nghiệp phân biệt bằng trường “level”.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã user Khóa chính 2 username varchar 20 Tên truy cập
3 password varchar 32 Mật khẩu 4 ten_congty varchar 255 Tên công ty 5 ten varchar 32 Họ và tên 6 email varchar 255 Email 7 dien_thoai varchar 50 Điện thoại
8 fax varchar 50 Fax 9 dia_chi varchar 255 Địa chỉ 10 level int 1 Cấp bậc
11 id_thanhpho int 11 Khóa phụ 12 id_quan int 11 Khóa phụ 13 trang_thai int 1 Active
14 time int 11 Ngày đăng ký
Bảng 3.5 Lưu danh sách thành viên
3.2.6 Bảng: scrab_locations_menu (Lưu danh mục cấp 1 địa điểm giảm giá)
Dùng để lưu danh mục địa điểm cấp 1 địa điểm giảm giá. Ví dụ: Làm đẹp… STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã DM địa
điểm
Khóa chính
2 cat varchar 20 Biến cat quy định điều kiện menu
Khóa phụ
3 ten varchar 32 Tên danh mục 4 hien_thi int 1 Trạng thái hiển
thị
Bảng 3.6 Lưu danh mục cấp 1 địa điểm giảm giá
3.2.7 Bảng: scrab_locations_menu_sub (Lưu danh mục cấp 2 địa điểm giảm giá) giá)
Dùng để lưu danh mục cấp 2 của địa điểm. Ví dụ: Nha Khoa và Beaty salon & Spa thuộc nhóm danh mục cấp 1 là: Làm đẹp.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã DM địa điểm Khóa chính 2 cat int 11 Mã DM cấp 1 địa điểm Khóa phụ
3 ten varchar 32 Tên danh mục 4 hien_thi int 1 Trạng thái hiển
thị
3.2.8 Bảng: scrab_locations (Lưu bài đăng địa điểm giảm giá)
Bảng scrab_locations dùng để lưu nội dung, thông tin chi tiết về địa điểm giảm giá bao gồm: địa chỉ của địa điểm, số điện thoại, điều kiện …
STT Tên trường Kiểu dữ liệu Length Chú thích Ghi chú 1 id int 11 Mã địa điểm Khóa chính 2 P_id int 11 Mã DM địa
điểm
Khóa phụ
3 ten varchar 255 Tên địa điểm 4 dia_chi varchar 255 Địa chỉ địa điểm
5 thanh_pho int 11 Mã Thành phố Khóa phụ 6 quan int 11 Mã Quận Khóa phụ 7 chu_thich text max Mô tả ngắn
8 chap_nhan text 255 Điều kiện sử dụng
9 hinh Varchar 255 Hình địa điểm 10 noi_dung text max Nội dung chi tiết
về địa điểm 11 thong_tin Text max Thông tin địa
điểm
12 hien_thi int 1 Trạng thái hiển thị
13 giam_gia int Phần trăm giảm giá
14 time int 11 Thời gian đăng 15 luot_xem int 11 Cập nhật lượt
xem
16 noi_bat Int 1 Trạng thái nổi bật
17 the_cc int 1 Có được chấp nhận thẻ không 18 vip int 1 Có phải là tin
vip không 19 time_batdau int 11 Thời gian bắt
đầu chấp nhận thẻ
20 time_hethan int 11 Thời gian hết hạn chấp nhận thẻ
21 user Mã Thành viên đăng bài
Khóa phụ
Bảng 3.8 Lưu bài đăng địa điểm giá tốt 3.2.9 Bảng: scrab_gqt_card_type (Lưu loại thẻ phát hành)
STT Tên trường Kiểu dữ liệu Length Chú thích Ghi chú 1 id int 11 Lưu Mã loại thẻ Khóa chính 2 ten varchar 255 Tên loại thẻ
3 gia_ban double Giá bán
4 thu_tu int 11 Sắp xếp thứ tự hiển thị
5 hien_thi int 1 Tình trạng
Bảng 3.9 Lưu loại thẻ phát hành 3.2.10 Bảng: scrab_gqt_card (Lưu thông tin thẻ)
Bảng scrab_gqt_card dùng để lưu thông tin về thẻ, thẻ đó thuộc lại thẻ nào, và thuộc ai sở hữu…
STT Tên trường Kiểu dữ liệu Length Chú thích Ghi chú 1 id int 11 Mã thẻ Khóa chính 2 ma_the varchar 255 Lưu mã số thẻ
3 id_loai_the double Mã loại thẻ Khóa phụ 4 hien_thi int 11 Thứ tự hiển thị
5 tinh_trang int 1 Tình trạng thẻ 6 date_batdau int 11 Ngày bắt đầu 7 date_hethan int 11 Ngày hết hạn 8 id_chu_the int 11 Mã chủ thẻ 9 ten varchar 255 Tên chủ thẻ 10 dien_thoai varchar 50 Điện thoại 11 fax varchar 50 Fax
12 dia_chi varchar 255 Địa chỉ
13 id_thanh_pho int 11 ID Thành phố Khóa phụ 14 id_quan int 11 ID Quận huyện Khóa phụ
Bảng 3.10 Lưu thông tin thẻ
3.2.11 Bảng: scrab_oder (Lưu thông tin đơn hàng mua thẻ)
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã đơn hàng Khóa chính 2 ten varchar 20 Tên Người mua
3 email varchar 255 Email người mua
4 dien_thoai varchar 50 Điện thoại 5 dia_chi varchar 255 Địa chỉ
6 id_thanh_pho int 11 Mã thành phố Khóa Phụ 7 id_quan int 11 Mã quận/ huyện Khóa phụ 8 id_loaithe int 11 Mã loại thẻ Khóa phụ 9 so_luong int 11 Số lượng mua
10 thanh_tien double Thành tiền 11 yeu_cau text Yêu cầu thêm 12 type_pay int 1 Loại hình thanh
toán
13 order_bk int 11 Thang toán Bảo Kim
14 ngaytt varchar 255 Ngày thanh toán tại Bảo Kim
15 member int 11 Mã user mua thẻ Khóa phụ 16 trang_thai int 1
17 time int 11 Thời gian giao dịch
Bảng 3.11 Lưu thông tin đơn hàng mua thẻ 3.2.12 Bảng: scrab_cms_menu (Lưu danh mục dạng tin tức)
Lưu Tên các danh mục thuộc loại tin tức. Ví dụ: Chương trình đào tạo, Hợp tác đào tạo.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã DM Tin tức Khóa chính 2 cat varchar 20 Biến cat quy
định điều kiện menu
Khóa phụ
3 ten varchar 32 Tên danh mục tin tức
4 thu_tu int 11 Dùng để sắp xếp vị trí
5 hien_thi int 1 Trạng thái hiển thị
bật
Bảng 3.12 Lưu danh mục dạng tin tức 3.2.13 Bảng: scrab_cms (Lưu bài viết dạng tin tức)
Dùng để lưu trữ các bài viết thuộc loại tin tức (_cms). Ví dụ: Bài viết “Quy trình quản lý hợp đồng” là bài viết thuộc DM “Chương trình đào tạo” có Mã DM tin tức là 6.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã tin tức Khóa chính 2 cat int 11 Mã DM Tin tức Khóa phụ 3 ten Varchar 255 Tên bài viết
4 chu_thich text max Mô tả ngắn 5 hinh Varchar 255 Lưu hình ảnh bài
viết
6 hinh_note Varchar 255 Chú thích cho hình ảnh 7 noi_dung text max Nội dung bài
viết
8 hien_thi int 1 Trạng thái hiển thị
9 time int 11 Thời gian đăng 10 user int 11 Mã User đăng
bài
11 luot_xem int 11 Cập nhật lượt xem
12 noi_bat int 1 Trạng thái nổi bật
Bảng 3.13 Lưu bài viết dạng tin tức
3.2.14 Bảng: scrab_gallery_menu (danh mục hình ảnh quảng cáo)
Dùng để lưu Danh mục hình ảnh quảng cáo. Ví dụ: Hình ảnh đối tác
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã DM gallery
2 cat varchar 20 Biến cat quy định điều kiện menu
3 ten varchar 32 Tên danh mục 4 thu_tu int 1 Dùng để sắp xếp
vị trí 5 hien_thi int 1 Trang thái
Bảng 3.14 Danh mục hình ảnh 3.2.15 Bảng: scrab_ gallery (Lưu hình ảnh quảng cáo)
Dùng để lưu hình ảnh quảng cáo bao gồm Tên hình ảnh, chú thích và đường dẫn cố định đến bài viết.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã gallery Khóa chính 2 cat int 11 Mã Danh mục
gallery
Khóa phụ
3 ten varchar 255 Tên hình ảnh 4 chu_thich text max Mô tả hình ảnh 5 hinh Varchar 255 Lưu hình ảnh 6 link Varchar 255 Đường dẫn liên
kết cố định 8 hien_thi int 1 Trạng thái hiển
thị
9 time int 11 Thời gian đăng 10 user int 11 Mã User đăng
hình
Khóa phụ
11 luot_xem int 11 Cập nhật lượt xem
Bảng 3.15 Lưu hình ảnhquảng cáo 3.2.16 Bảng: scrab_ about (Lưu bài viết mục giới thiệu)
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã bài viết
2 ten varchar 255 Tên bài viết 3 so_luoc text max Sơ lược bài viết 4 noi_dung text max Nội dung bài
viết
5 time int 11 Thời gian đăng 6 user int 11 Mã User đăng
bài viết
Khóa phụ
7 luot_xem int 11 lượt xem
3.2.17 Bảng: scrab_page (Lưu các trang lẻ)
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã trang Khóa chính 2 alias varchar 32 Tên biến quy
định
3 ten varchar 255 Tên bài viết 4 noi_dung text max Nội dung bài
viết
5 time int 11 Thời gian đăng 6 user int 11 Mã User đăng
bài viết
Khóa phụ
7 luot_xem int 11 Cập nhật lượt xem
Bảng 3.17 Lưu các trang lẻ
3.2.18 Bảng: scrab_email (Lưu email khách hàng đăng ký nhận tin)
Dùng để lưu email khách hàng đăng ký nhận tin qua form ngoài trang chủ.
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã email Khóa chính 2 email varchar 255 Lưu email
3 time datetime Ngày gửi
Bảng 3.18 Lưu email khách hàng đăng ký nhận tin 3.2.19 Bảng: scrab_support (Lưu thông tin hỗ trợ trực tuyến)
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 id int 11 Mã hỗ trợ Khóa chính 2 tieude varchar 32 Tên bộ phân
3 yahoo varchar 255 Nick yahoo 4 other text Thông tin khác 5 time int 11 Thời gian đăng
Bảng 3.19 Lưu thông tin hỗ trợ trực tuyến
3.2.20 Bảng: scrab_online (Lưu ip truy cập tạm thời – số người đang online)
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 ip varchar 11 IP truy cập Khóa chính 2 time varchar 255 Thời gian truy
cập
3 site varchar 255 Truy cập vào trang
4 agent varchar 255 Trình duyệt truy cập
Bảng 3.20 Lưu ip truy cập – số người đang online
3.2.21 Bảng: scrab_online_daily (Lưu lượt truy cập theo ngày)
STT Tên trường Kiểu dữ liệu Length Chú thích Ràng buộc 1 ngay datetime Khóa chính 2 bo_dem int 11 Lưu số lượt truy
cập
3.3 Mô hình dữ liệu quan hệ (RDM)
CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH 4.1 Giới thiệu công cụ, ngôn ngữ
4.1.1 Ngôn ngữ lập trình PHP
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Đoạn mã sau minh họa giúp cách viết PHP lồng vào các trang HTML dễ dàng như thế nào: <html> <head> <title>Mã mẫu</title> </head> <body> <?php
echo "Chào thế giới PHP!"; ?>
</body> </html>
Thẻ <?php và thẻ ?> sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã PHP qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá tiện lợi của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng trong việc xây dựng phần giao diện ứng dụng HTTP.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.
4.1.2 Hệ quản trị cơ sở dữ liệu MySQL4.1.2.1 Khái niệm 4.1.2.1 Khái niệm
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, ..
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...
4.1.2.2 Tại sao ta sử dụng hệ cơ sở dữ liệu MySQL?
- Nhanh và mạnh: MySQL không có đầy đủ những cơ sở vật chất cho một hệ Quản trị CSDL chính tông, nhưng đối với công việc thường nhật của phần đông mọi người thì nó cung cấp cũng khá nhiều thứ. Nếu công việc của bạn là lưu trữ dữ liệu trên web hoặc làm một trang Thương mại điện tử thì MySQL có đủ những thứ bạn cần. Đối với nhũng CSDL cỡ trung bình thì MySQL hỗ trợ tuyệt vời về tốc độ.
- Cải tiến liên tục: MySQL được cải thiện liên tục với một tần số không ngờ. Các nhà phát triển nó cập nhật thường xuyên, ngoài ra còn bổ sung các tính năng hữu ích cho nó.
4.1.3 Cài đặt chương trình chạy và ứng dụng kết hợp PHP – MYSQL4.1.3.1 Cài đặt chương trình chạy PHP – MYSQL 4.1.3.1 Cài đặt chương trình chạy PHP – MYSQL
Đây là phần mềm giúp bạn tạo ra một server ảo localhost trên máy tính của bạn để có thể test code
Ưu điểm: support toàn đồ xịn từ apache, php, mysql và nhất là hỗ trợ ZEND, và htaccess...
Hướng dẫn cài đặt: Download phiên bản Vertrigo_223 tại địa chỉ: http://vertrigo.sourceforge.net
Chuẩn bị: Cũng như tất cả các chương trình tạo localhost khác, nó đòi hỏi phải được cài trong một chiếc computer "sạch sẽ", nghĩa là không có các chương trình liên quan đến webserver được cài đặt trước đó như AppServ, MySQL, Php...
Nếu có, bạn phải xóa "tận gốc" chúng (trước khi xóa, phải vào Start -> Settings -> Control Panel -> Administrative Tools -> Services để tắt các dịch vụ như Apache, MySQL), xóa luôn cả file php.ini trong thư mục C:\windows rồi khởi động lại máy. Cài đặt: Bạn chạy file cài đặt, lựa chọn ngôn ngữ --> Next -> I Agree -> Next -> chọn thư mục cài đặt (D: \VertrigoServ) --> Next -> Install.
Biểu tượng VertrigoServ xuất hiện trên màn hình dưới dạng:
Hình 4.1 Biểu tượng VertrigoServ
Hình 4.2 Cài đặt khởi động phẩn mềm
Hình 4.3 Bên dưới System Tray
Nếu hình chữ thập trong icon màu xanh, tức là server đang chạy. Màu đỏ - đang tắt. Màu vàng – đang khởi động.
Hình 4.4 Menu Vertrigo
Webroot trong trường hợp này sẽ là D: \VertrigoServ\www\
Hình 2.5 Thư mục Webroot D: \VertrigoServ\www\ Để kiểm tra xem Webserver có hoạt động hay không bạn gõ vào trình duyệt http://localhost hoặc http://127.0.0.1
4.1.3.2 Giới thiệu class Kết nối và tuy vấn SQL (mssql.class.php) <?php // Public function class lg_mssql { var $conn; var $db_name; var $count_query = 0; // init
public function __construct( $host , $db_user , $db_pass , $db_name) {
$this->$db_name = $db_name;
$this->conn = mssql_connect($host , $db_user, $db_pass); mssql_select_db($db_name , $this->conn);
}
public function __destruct() {
@mssql_close( $this->conn ); }
// select - insert - update - delete public function query ( $sql ) {
return @mssql_query($sql , $this->conn); }
public function select ( $table , $where = "" , $clause = "" ) {
$this->count_query++;
$sql = "SELECT * FROM ".$table; if (trim($where) != "")
$sql .= " WHERE ".$where; if (trim($clause) != "")
$sql .= " ".$clause;
return @mssql_query($sql , $this->conn); }
public function insert ( $table , $feild , $values ) {
$this->count_query++;
$sql = "INSERT INTO ".$table; if ( trim($feild) != "" )
$sql .= " (".$feild.")";
$sql .= " VALUES (".$values.") SELECT @@IDENTITY as incId;"; @mssql_query($sql, $this->conn );
return mssql_insert_id($this->conn); }
public function update ( $table , $feild , $value , $where ) {
$this->count_query++;
$sql = "UPDATE $table SET $feild = '".$this->inj_str($value)."'";