Ràng buộc liên bộ

Một phần của tài liệu Ứng dụng AJAX xây dựng website văn hóa ẩm thực (Trang 59)

Ràng buộc 11:

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Bối cảnh: NhaCungCap

Điều kiện: q1∈ T NhaCungCap, q2∈T NhaCungCap

q1.MaNhaCungCap<>q2.MaNhaCungCap Or q1.MaKhuVuc<>q2.MaKhuVuc Or q1.MaLoaiNCC<> q2.MaLoaiNCC Tầm ảnh hưởng: Thêm Xoá Sửa NhaCungCap + - +[MaNhaCungCap, MaKhuVuc,MaLoaiNCC] Ràng buộc 12:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

Bối cảnh: MonAn

Điều kiện: q1∈ T MonAn, q2∈ T MonAn

q1.MaMonAn<>q2.MaMonAn

Or q1.MaNhaCungCap<>q2.MaNhaCungCap Or q1.MaLoaiMonAn<> q2.MaLoaiMonAn

Tầm ảnh hưởng:

Thêm Xoá Sửa

MonAn + - +[MaMonAn,MaNhaCungCap, MaLoaiMonAn]

Ràng buộc 13:

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui,TrangThai)

Bối cảnh: PhanHoiTuThucKhach

Điều kiện: q1∈ T PhanHoiTuThucKhach, q2∈ T PhanHoiTuThucKhach

q1.MaPhanHoi<>q2.MaPhanHoi Or q1.MaNhaCungCap<>q2.MaNhaCungCap Or q1.MaQuanTri<> q2.MaQuanTri Tầm ảnh hưởng: Thêm Xoá Sửa PhanHoiTuThucKhach + - +[MaPhanHoi, MaNhaCungCap,MaQuanTri] Ràng buộc 14:

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin) Bối cảnh: TinTuc

Điều kiện: q1∈ T TinTuc, q2∈ T TinTuc

q1.MaTinTuc<>q2.MaTinTuc Or q1.MaLoaiTinTuc<>q2.MaLoaiTinTuc

Tầm ảnh hưởng:

Thêm Xoá Sửa

TinTuc + - +[MaTinTuc, MaLoaiTinTuc]

3.7.4 Ràng buộc toàn vẹn có bối cảnh gồm nhiều quan hệ

3.7.4.1 Ràng buộc toàn vẹn về phụ thuộc tồn tại

Ràng buộc 15:

PhaLoaiNCC(MaLoaiNCC, TenLoaiNCC) (adsbygoogle = window.adsbygoogle || []).push({});

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

Bối cảnh: PhanLoaiNCC, NhaCungCap

Điều kiện: PhanLoaiNCC[MaLoaiNCC] ⊆ NhaCungCap[MaLoaiNCC]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiNCC + - +[MaLoaiNCC]

NhaCungCap - + +[MaLoaiNCC]

Ràng buộc 16:

Bối cảnh: KhuVucNCC, NhaCungCap

Điều kiện: KhuVucNCC[MaKhuVuc] ⊆ NhaCungCap[MaKhuVuc]

Tầm ảnh hưởng:

Thêm Xoá Sửa

KhuVucNCC + - +[MaKhuVuc]

NhaCungCap - + +[MaKhuVuc]

Ràng buộc 17:

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin) PhanLoaiTinTuc(MaLoaiTT, TenTT)

Bối cảnh: PhanLoaiTinTuc, TblTinTuc

Điều kiện: PhanLoaiTinTuc[MaLoaiTT] ⊆ TinTuc[MaLoaiTT]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiTinTuc + - +[MaLoaiTT]

TinTuc - + +[MaLoaiTT]

Ràng buộc 18:

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

Bối cảnh: NhaCungCap, MonAn

Điều kiện: NhaCungCap[MaNhaCungCap] ⊆ MonAn[MaNhaCungCap] (adsbygoogle = window.adsbygoogle || []).push({});

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiNhaCungCap + - +[MaNhaCungCap]

MonAn - + +[MaNhaCungCap]

Ràng buộc 19:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

PhanLoaiMonAn(MaLoaiMonAn, TenLoaiMonAn) Bối cảnh: PhanLoaiMonAn, MonAn

Điều kiện: PhanLoaiMonAn[MaLoaiMonAn] ⊆ MonAn[MaLoaiMonAn]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanLoaiTinTuc + - +[MaLoaiTT]

TinTuc - + +[MaLoaiTT]

Ràng buộc 20:

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui,TrangThai)

BanQuanTri(MaQuanTri,TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,

DiaChiEmail, LoaiQuanTri)

Bối cảnh: PhanHoiTuThucKhach, BanQuanTri

Điều kiện: PhanHoiTuThucKhach[MaQuanTri] ⊆ BanQuanTri[MaQuanTri]

Tầm ảnh hưởng:

Thêm Xoá Sửa

PhanHoiTuThucKhach + - +[MaQuanTri]

BanQuanTri - + +[MaQuanTri]

3.7.4.2 Ràng buộc liên thuộc tính , liên quan hệ

Ràng buộc 21:

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai) (adsbygoogle = window.adsbygoogle || []).push({});

Bối cảnh: MonAn ,NhaCungCap Điều kiện: ∀qi ∈ MonAn

∃ qj ∈ T NhaCungCap: qi.MaNhaCungCap=qj.MaNhaCungCap Thì qi.NgayDangKy>=qj.NgayDangBai Tầm ảnh hưởng: Thêm Xoá Sửa MonAn + - +[NgayDangBai] NhaCungCap - + +[NgayDangKy]

Bối cảnh: NhaCungCap ,PhanHoiTuThucKhach Điều kiện: ∀qi ∈ NhaCungCap

∃ qj ∈ T PhanHoiTuThucKhach: qi.MaNhaCungCap=qj.MaNhaCungCap Thì qi.NgayGui<=qj.NgayDangKy Tầm ảnh hưởng: Thêm Xoá Sửa PhanHoiTuThucKhach + - +[NgayGui] NhaCungCap - + +[NgayDangKy]

3.8 DẠNG CHUẨN

NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,

MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)

ƒ Nhà cung cấp đạt dạng chuẩn 1 vì mọi thuộc tính của nhà cung cấp đều là thuộc tính đơn.

ƒ Nhà Cung Cấp đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của Nhà Cung Cấp đều phụ thuộc đầy đủ vào các khóa của Nhà Cung Cấp.

ƒ Nhà Cung Cấp đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của Nhà Cung Cấp đều không phụ thuộc bắc cầu vào một khóa nào của Nhà Cung Cấp.

ƒ Nhà Cung Cấp có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC)

ƒ Đạt dạng chuẩn 1 vì mọi thuộc tính của nhà cung cấp đều là thuộc tính đơn. ƒ FPhanLoaiNCC = { f1: MaLoaiNCCÆ TenLoaiNCC } Æ PhanLoaiNCC đạt

dạng chuẩn 2.

ƒ PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenLoaiNCC và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC) có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

KhuVucNCC(MaKhuVuc, TenKhuVuc)

ƒ KhuVucNCC Đạt dạng chuẩn 1 vì mọi thuộc tính của KhuVucNCC đều là thuộc tính đơn.

ƒ FKhuVucNCC = { f1: MaKhuVucÆ TenKhuVuc } Æ KhuVucNCC đạt dạng chuẩn 2.

ƒ KhuVucNCC(MaKhuVuc, TenKhuVuc) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenKhuVuc và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ KhuVucNCC có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanLoaiMonAn(MaLoaiMonAn, TenLoaiMonAn )

ƒ PhanLoaiMonAn Đạt dạng chuẩn 1 vì mọi thuộc tính của nhà cung cấp đều là thuộc tính đơn.

ƒ FPhanLoaiMonAn = { f1: MaLoaiMonAnÆ TenLoaiMonAn} ÆPhanLoaiMonAn đạt dạng chuẩn 2.

ƒ PhanLoaiMonAn( MaLoaiMonAn, TenLoaiMonAn) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenLoaiMonAn và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ PhanLoaiMonAn có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,

GioiThieu, NgayDangBai, TrangThai)

ƒ MonAn Đạt dạng chuẩn 1 vì mọi thuộc tính của món ăn đều là thuộc tính đơn. ƒ MonAn đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của MonAn đều phụ

thuộc đầy đủ vào các khóa MonAn. (adsbygoogle = window.adsbygoogle || []).push({});

ƒ MonAn đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của MonAn không phụ thuộc bắc cầu vào các khóa.

ƒ MonAn có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanLoaiTinTuc(MaLoaiTT, TenLoaiTT )

ƒ PhanLoaiTinTuc Đạt dạng chuẩn 1 vì mọi thuộc tính của PhanLoaiTinTuc đều là thuộc tính đơn.

ƒ FPhanLoaiTinTuc = { f1: MaLoaiTTÆ TenLoaiTT} ÆPhanLoaiTT đạt dạng chuẩn 2.

ƒ PhanLoaiTinTuc( MaLoaiTinTuc, TenLoaiTinTuc) đạt dạng chuẩn 3 vì chỉ có một thuộc tính không khóa là TenLoaiTinTuc và thuộc tính này không phụ thuộc bắc cầu vào các khóa.

ƒ PhanLoaiTinTuc có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin )

ƒ TinTuc đạt dạng chuẩn 1 vì mọi thuộc tính của TinTuc đều là thuộc tính đơn. ƒ FtinTuc{f1: MaTinTuc, MaLoaiTTÆ TieuDe, NoiDung, NgayDangTin }Æ

Đạt dạng chuẩn 2.

ƒ TinTuc đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của TinTuc không phụ thuộc bắc cầu vào các khóa.

ƒ TinTuc có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

BanQuanTri(MaQuanTri, TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,

DiaChiEmail, LoaiQuanTri )

ƒ BanQuanTri đạt dạng chuẩn 1 vì mọi thuộc tính của BanQuanTri đều là thuộc tính đơn.

ƒ FBanQuanTri{f1: MaQuanTriÆTenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai, DiachiEmail , LoaiQuanTri}Æ đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của BanQuanTri đều phụ thuộc đầy đủ vào các khóa BanQuanTri.

ƒ BanQuanTri đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của BanQuanTri không phụ thuộc bắc cầu vào các khóa.

ƒ BanQuanTri có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,

DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui, TrangThai) ƒ PhanHoiTuThucKhach đạt dạng chuẩn 1 vì mọi thuộc tính của

PhanHoiTuThucKhach đều là thuộc tính đơn.

ƒ PhanHoiTuThucKhach đạt dạng chuẩn 2 vì mọi thuộc tính không khóa của PhanHoiTuThucKhach đều phụ thuộc đầy đủ vào các khóa.

ƒ PhanHoiTuThucKhach đạt dạng chuẩn 3 vì mọi thuộc tính không khóa của PhanHoiTuThucKhach không phụ thuộc bắc cầu vào các khóa.

ƒ PhanHoiTuThucKhach có vế trái của phụ thuộc hàm là siêu khóa. Nó đạt dạng chuẩn BCK.

3.9 SƠĐỒ WEBSITE

3.9.1 Sơ Đồ Cho Người Dùng

3.9.2 SơĐồ Cho Ban Quản Trị

CHƯƠNG 4 KẾT QUẢ THỰC HIỆN 4.1 NHỮNG TRANG ỨNG DỤNG AJAX

4.1.1 Trang của ban quản trị

Khi dùng AJAX thì tại trang đổi mật khẩu của Ban quản trị, nhập mật khẩu cũ vào thì Ajax sẽ giúp kiểm tra mật khẩu cũ mà admin nhập vào, bằng cách trao đổi dữ liệu với web server, không có nạp lại trang. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.1 Màn hình thay đổi mật khẩu.

Thông tin đầu vào:

- Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu mới.

Thông tin đầu ra:

- Hiện thông báo lỗi nếu thông tin điền vào không đầy đủ hoặc không hợp lệ. - Hiện thông báo đổi mật khẩu thành công nếu thông tin đầu vào đầy đủ và

hợp lệ.

Kiểm tra hợp lệ:

- Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu không được để trống và phải có từ 6 đến 24 ký tự. Xác nhận mật khẩu phải giống với mật khẩu mới.

4.1.2 Trang khi xác lập lại mật khẩu cho quản trị khác

Tại trang xác nhập lại mật khẩu cho quản trị khác, khi admin nhấn vào nút xác lập lại thì việc kiểm tra đó không cần nạp lại trang mà nó trao đổi dữ liệu với web server. SVTH: Đỗ Thị Hiền, Nguyễn Thị Thuý Loan. 71

Hình 4.2 Màn hình xác lập lại mật khẩu cho quản trị khác

Trang này có chức năng hỗ trợ cho admin có quyền cao nhất để xác nhận lại mật khẩu cho các admin khác.

4.1.3 Trang đăng kí

Tại trang đăng kí, khi nhập hết thông tin rồi gửi form đăng kí lên máy chủ để kiểm tra. Ajax sẽ giúp kiểm tra từng dòng lệnh mà khách hàng nhập vào form đăng kí xem có hợp lí và không trùng lặp với thông tin trong cơ sở dữ liệu, mà không nạp lại trang.

Hình 4.3 Đăng Ký

Thông tin đầu vào:

Tên đăng nhập, mật khẩu, xác nhận mật khẩu, tên nhà hàng, khu vực, loại hình, số điện thoại, địa chỉ email, câu hỏi bí mật, câu trả lời, giới thiệu về nhà hàng, ảnh minh họa nhà hàng.

- Thông tin đầu ra:

Hiện thông báo lỗi nếu thông tin nhập vào không hợp lệ.

Hiện thông báo đăng ký thành công và chờ duyệt nếu thông tin nhập vào đầy đủ và hợp lệ.

- Kiểm tra hợp lệ:

- Tên đăng nhập và mật khẩu: Không được để trống và phải có từ 6 đến 24 ký tự, giữa các ký tự không có khoảng trắng.

- Xác nhận mật khẩu: Phải giống với mật khẩu.

- Tên nhà hàng: Không được để trống và dài không quá 50 ký tự. - Sốđiện thoại: Phải là chữ số và có từ 8 đến 12 ký tự.

- Địa chỉ email: Không được để trống và phải hợp lệ.

- Câu trả lời: Không được để trống và dài không quá 50 ký tự. - Giới thiệu: Không được để trống và dài không quá 4000 ký tự. - Ảnh nhà hàng: Bắt buộc phải có.

Sau khi nhập những thông tin cần thiết tiếp tục đăng ký sẽ có trang quy định khi đăngký. Nếu đồng ý với những quy định đã đề ra khi đăng ký thì bấm tiếp tục để hoànthành việc đăng ký.

4.1.4 Trang đổi mật khẩu của Nhà cung cấp

Tương tựở trang của Ban quản trị khi nhà cung cấp đổi mật khẩu, khi nhà cung câp nhập mật khẩu cũ vào thì Ajax sẽ giúp kiểm tra mật khẩu cũđó, bằng cách trao đổi dữ liệu với web server, không có nạp lại trang.

Hình 4.4 Đổi mật khẩu nhà cung cấp - Thông tin đầu vào: (adsbygoogle = window.adsbygoogle || []).push({});

Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu mới. - Thông tin đầu ra:

Hiện thông báo lỗi nếu thông tin điền vào không đầy đủ hoặc không hợp lệ. Hiện thông báo đổi mật khẩu thành công nếu thông tin đầu vào đầy đủ và hợp lệ.

- Kiểm tra hợp lệ:

Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu không được để trống và phải có từ 6 đến 24 ký tự. Xác nhận mật khẩu phải giống với mật khẩu mới.

4.1.5 Trang quy định khi đăng ki

- Áp dụng khi đăng ký làm thành viên của trang web.

- Để đăng kí được thành viên của trang web thì phải đồng ý với những qui định của trang web, khách hàng cần lick vào checkbox thì Ajax sẽ giúp trao đổi dữ liệu với web server, không có nạp lại trang.

Hình 4.5 Quy định khi đăng ký

4.1.6 Xác lập lại mật khẩu cho nhà cung cấp

Khi nhà cung cấp quên mật khẩu thì vào trang xác lập lại mật khẩu cho nhà cung cấp, nhà cung cấp phải đăng nhập đúng tên, chọn câu hỏi bí mật và phải trả lời đúng câu hỏi bí mật khi click vào xác nhận thì Ajax sẽ giúp kiểm tra tên đăng nhập và câu trả lời chính xác với thông tin dưới cơ sở dữ liệu, nhưng không cần nạp lại trang.

Hình 4.6 Xác lập lại mật khẩu cho nhà cung cấp

4.2 GIAO DIỆN CỦA CHƯƠNG TRÌNH

4.2.1 Trang chủ

Hình 4.7 Trang chủ

Đăng nhp:

- Thông tin đầu vào:

Tên đăng nhập và mật khẩu. - Thông tin đầu ra:

Hiện thông báo lỗi nếu thông tin nhập vào không hợp lệ.

Hiện thông báo đăng nhập thành công nếu thông tin đúng và hợp lệ. - Kiểm tra hợp lệ:

Tên đăng nhập và mật khẩu: Không được để trống và phải có từ 6 đến 24 ký tự.

Phn tìm kiếm:

- Thông tin đầu vào:

Từ khóa cần tìm và thể loại tìm kiếm. - Thông tin đầu ra:

Hiện thông báo lỗi nếu từ khóa tìm kiếm không hợp lệ.

Hiển thị loại thông tin tìm được có chứa từ khóa nếu thông tin đầy đủ vào hợp lệ.

- Kiểm tra hợp lệ:

Từ khóa: Không được để trống.

Giới thiệu tổng quát về các món ăn. Khi thực khách muốn xem thông tin của món ăn nào đó thì nhấp vào xem chi tiết. Chương trình sẽ hiển thị giới thiệu chi tiết về món ăn đó.

4.2.2 Chi tiết món ăn

Hình 4.8 Chi tiết món ăn (adsbygoogle = window.adsbygoogle || []).push({});

Giới thiệu chi tiết thông tin món ăn mà bạn muốn biết. Tên món ăn, loại món ăn, nhà cung cấp, giới thiệu thông tin chi tiết nguyên liệu, thành phần dinh dưỡng của món ăn.

4.2.3 Trang admin

Hình 4.9 Trang Admin

4.2.4 Góp ý tới nhà cung cấp

Hình 4.10 Góp ý tới nhà cung cấp

- Thông tin đầu vào:

Nhà hàng muốn gửi phản hồi tới, tên thực khách, địa chỉ thực khách, số điện thoại, địa chỉ email, tiêu đề phản hồi, nội dung phản hồi.

- Thông tin đầu ra:

Hiện thông báo lỗi nếu thông tin đầu vào không đầy đủ hoặc không hợp lệ. Hiện thông báo phản hồi đã được gửi đi nếu thông tin đầu vào đầy đủ và hợp lệ.

- Kiểm tra hợp lệ:

Tên khách hàng: Không được để trống và dài không quá 50 ký tự. Địa chỉ: Không được để trống và dài không quá 100 ký tự.

Sốđiện thoại: Phải là chữ số và có từ 8 đến 12 ký tự. Địa chỉ email: Phải hợp lệ.

Tiêu đề phản hồi: Không được để trống và dài không quá 50 ký tự. Nội dung phản hồi: Không được để trống và dài không quá 4000 ký tự.

4.2.5 Giới thiệu thông tin nhà cung cấp

Hình 4.11 Thông tin nhà cung cấp

Đưa ra những thông tin chi tiết về nhà cung cấp: Tên nhà cung cấp, loại hình, khu vực, địa chỉ, sốđiện thoại, địa chỉ email, ngày đăng ký, giới thiệu.

4.2.6 Trang đổi mật khẩu của Nhà cung cấp

Tương tựở trang của Ban quản trị khi nhà cung cấp đổi mật khẩu, khi nhà cung câp nhập mật khẩu cũ vào thì Ajax sẽ giúp kiểm tra mật khẩu cũđó, bằng cách trao đổi dữ liệu với web server, không có nạp lại trang.

Hình 4.12 Đổi mật khẩu nhà cung cấp - Thông tin đầu vào:

Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu mới. - Thông tin đầu ra:

Hiện thông báo lỗi nếu thông tin điền vào không đầy đủ hoặc không hợp lệ. Hiện thông báo đổi mật khẩu thành công nếu thông tin đầu vào đầy đủ và hợp lệ.

- Kiểm tra hợp lệ:

Mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu không được để trống và phải có từ 6 đến 24 ký tự. Xác nhận mật khẩu phải giống với mật khẩu mới.

4.3 CÀI ĐẶT VÀ THỬ NGHIỆM

Một phần của tài liệu Ứng dụng AJAX xây dựng website văn hóa ẩm thực (Trang 59)