Giáo trình chương 1: Ngôn ngữ lập trình PHP
Giáo trình chương 1: Ngôn ngữ lập trình PHP
Preview text:
lOMoARcPSD|25518217 PHẦN I NỘI DUNG
CHƯƠNG 1 TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT
1.1. Tìm hiểu về ngôn ngữ lập trình PHP
1.1.1. Khái niệm ngôn ngữ lập trình PHP
PHP là chữ viết tắt của “Personal Home Page” do Rasmus Lerdorf tạo ra năm
1994. Vì tính hữu dụng của nó và khả năng phát triển, PHP bắt đầu được sử dụng
trong môi trường chuyên nghiệp và nó trở thành “PHP: Hypertext Preprocessor”.
Thực chất PHP là ngôn ngữ kịch bản nhúng trong HTML, nói một cách đơn giản
đó là một trang HTML có nhúng mã PHP, PHP có thể được đặt rải rác trong HTML.
PHP là một ngôn ngữ lập trình được kết nối chặt chẽ với máy chủ, là một công
nghệ phía máy chủ (Server-Side) và không phụ thuộc vào môi trường (cross-
platform). Đây là hai yếu tố rất quan trọng, thứ nhất khi nói công nghệ phía máy chủ
tức là nói đến mọi thứ trong PHP đều xảy ra trên máy chủ, thứ hai, chính vì tính chất
không phụ thuộc môi trường cho phép PHP chạy trên hầu hết trên các hệ điều hành
như Windows, Unix và nhiều biến thể của nó... Đặc biệt các mã kịch bản PHP viết
trên máy chủ này sẽ làm việc bình thường trên máy chủ khác mà không cần phải chỉnh
sửa hoặc chỉnh sửa rất ít.
Khi một trang Web muốn được dùng ngôn ngữ PHP thì phải đáp ứng được tất
cả các quá trình xử lý thông tin trong trang Web đó, sau đó đưa ra kết quả ngôn ngữ HTML.
Khác với ngôn ngữ lập trình, PHP được thiết kế để chỉ thực hiện điều gì đó sau
khi một sự kiện xảy ra (ví dụ, khi người dùng gửi một biểu mẫu hoặc chuyển tới một URL).
1.1.2. Tại sao nên dùng PHP
Để thiết kế Web động có rất nhiều ngôn ngữ lập trình khác nhau để lựa chọn,
mặc dù cấu hình và tính năng khác nhau nhưng chúng vẵn đưa ra những kết quả giống
nhau. Chúng ta có thể lựa chọn cho mình một ngôn ngữ: ASP, PHP, Java, Perl... và
một số loại khác nữa. Vậy tại sao chúng ta lại nên chọn PHP. Rất đơn giản, có những
lí do sau mà khi lập trình Web chúng ta không nên bỏ qua sự lựa chọn tuyệt vời này.
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
PHP được sử dụng làm Web động vì nó nhanh, dễ dàng, tốt hơn so với các giải
pháp khác. PHP có khả năng thực hiện và tích hợp chặt chẽ với hầu hết các cơ sở dữ
liệu có sẵn, tính linh động, bền vững và khả năng phát triển không giới hạn. Đặc biệt
PHP là mã nguồn mở do đó tất cả các đặc tính trên đều miễn phí, và chính vì mã
nguồn mở sẵn có nên cộng đồng các nhà phát triển Web luôn có ý thức cải tiến nó,
nâng cao để khắc phục các lỗi trong các chương trình này.
PHP vừa dễ với người mới sử dụng vừa có thể đáp ứng mọi yêu cầu của các lập
trình viên chuyên nghiệp, mọi ý tuởng của các bạn PHP có thể đáp ứng một cách xuất sắc.
1.1.3. Hoạt động của PHP
Vì PHP là ngôn ngữ của máy chủ nên mã lệnh của PHP sẽ tập trung trên máy
chủ để phục vụ các trang Web theo yêu cầu của người dùng thông qua trình duyệt.
Máy khách Yêu cầu URL Máy chủ hàng HTML Web HTML PH P Gọi mã kịch bản
Sơ đồ hoạt động của PHP
Khi người dùng truy cập Website viết bằng PHP, máy chủ đọc mã lệnh PHP và
xử lí chúng theo các hướng dẫn được mã hóa. Mã lệnh PHP yêu cầu máy chủ gửi một
dữ liệu thích hợp (mã lệnh HTML) đến trình duyệt Web. Trình duyệt xem nó như là
một trang HTML tiêu chuẩn. Như ta đã nói, PHP cũng chính là một trang HTML
nhưng có nhúng mã PHP và có phần mở rộng là HTML. Phần mở của PHP được đặt
trong thẻ mở <?php và thẻ đóng ?> .Khi trình duyệt truy cập vào một trang PHP,
Server sẽ đọc nội dung file PHP lên và lọc ra các đoạn mã PHP và thực thi các đoạn
mã đó, lấy kết quả nhận được của đoạn mã PHP thay thế vào chỗ ban đầu của chúng
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
trong file PHP, cuối cùng Server trả về kết quả cuối cùng là một trang nội dung HTML về cho trình duyệt. 1.1.4. Cú pháp PHP
1.1.4.1. Cấu trúc cơ bản
PHP cũng có thẻ bắt đầu và kết thúc giống với ngôn ngữ HTML. Chỉ khác, đối
với PHP chúng ta có nhiều cách để thể hiện. Cách 1: Cú pháp chính: <?php Mã lệnh PHP ?>
Cách 2: Cú pháp ngắn gọn: <? Mã lệnh PHP ?>
Cách 3: Cú pháp giống với ASP: <% Mã lệnh PHP %>
Cách 4: Cú pháp bắt đầu bằng script:
Mặc dù có 4 cách thể hiện. Nhưng đối với 1 lập trình viên có kinh nghiệm thì việc sử
dụng cách 1 vẫn là lựa chon tối ưu.
Trong PHP để kết thúc 1 dòng lệnh chúng ta sử dụng dấu ";"
Để chú thích 1 đoạn dữ liệu nào đó trong PHP ta sử dụng dấu "//" cho từng dòng.
Hoặc dùng cặp thẻ "/*……..*/" cho từng cụm mã lệnh. <?
Echo “CCLT04A”; // Day la vi du ve code PHP /* Voi cu phap nay chung ta
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
Co the chu thich 1 cum ma lenh*/ ?>
1.1.4.2. Xuất giá trị ra trình duyệt
Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau: Echo "Thông tin"; Printf "Thông tin";
Thông tin bao gồm: biến, chuỗi, hoặc lệnh HTML …. <?php Echo “Wellcom”; Printf” to LT04A.ORG; ?>
Nếu giữa hai chuỗi muốn liên kết với nhau ta sử dụng dấu "." <?php
Echo “Wellcom”.”to LT04A.ORG”; ?>
1.1.5. Khái niệm biến, hằng và chuỗi trong PHP
1.1.5.1. Biến trong PHP
Biến được xem là vùng nhớ dữ liệu tạm thời. Và giá trị có thể thay đổi được.
Biến được bắt đầu bằng ký hiệu "$". Và theo sau chúng là 1 từ, 1 cụm từ nhưng phải
viết liền hoặc có gạch dưới. Một biến được xem là hợp lệ khi nó thỏa các yếu tố:
Tên của biến phải bắt đầu bằng dấu gạch dưới và theo sau là các ký tự, số hay dấu gạch dưới.
Tên của biến không được phép trùng với các từ khóa của PHP.
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
Trong PHP để sử dụng 1 biến chúng ta thường phải khai báo trước, tuy nhiên đối
với các lập trình viên khi sử dụng họ thường xử lý cùng một lúc các công việc, nghĩa
là vừa khái báo vừa gán dữ liệu cho biến. Bản thân biến cũng có thể gãn cho các kiểu
dữ liệu khác. Và tùy theo ý định của người lập trình mong muốn trên chúng.
Một số ví dụ về biến: <?
$a= 100 // biến a ở đây có giá trị là 100.
$a= “CCLT04A” // biến a ở đây có giá trị là “CCLT04A”.
Biena=123 // Cõ lỗi vì bắt đầu 1 biến phải có dấu $.
$123a = “CCLT04A” // Cõ lỗi vì phần tên bắt đầu của biến là dạng số. ?>
1.1.5.2. Hằng trong PHP
Nếu biến là cái có thể thay đổi được thì ngược lại hằng là cái chúng ta không thể thay
đổi được. Hằng trong PHP được định nghĩa bởi hàm define theo cú pháp: define
(string tên_hằng, giá_trị_hằng). Cũng giống với biến hằng được xem là hợp lệ thì
chúng phải đáp ứng 1 số yếu tố:
Hằng không có dấu "$" ở trước tên.
Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh.
Hằng chỉ được phép gán giá trị duy nhất 1 lần.
Hằng thường viết bằng chữ in để phân biệt với biến Ví dụ : <?
define (“C”,”COMPANY”);
define (“YELLOW”, ”ffff00”);
echo “Gia tri cua C la”. C;
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217 ?>
1.1.5.3. Khái niệm về chuỗi
Chuỗi là một nhóm các kỹ tự, số, khoảng trắng, dấu ngắt được đặt trong các dấu nháy. Ví dụ: ‘CCLT04A’ "welcome to LT04A.ORG"
Để tạo 1 biễn chuỗi, chúng ta phải gán giá trị chuỗi cho 1 biến hợp lệ. Ví dụ: $fisrt_name= "Dinh"; $last_name= ‘Nho Thong’;
Để liên kết 1 chuỗi và 1 biến chúng ta thường sử dụng dấu "."
1.1.6. Session và Cookie
Cookie và session là hai phương pháp sử dụng để quản lý các phiên làm việc
giữa người sử dụng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp bạn tạo ra sự
chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng
cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp người truy cập cảm thấy
dễ dàng sử dụng dịch vụ của trang web cho những lần truy cập sau. Bởi cớ chế quản
lý phiên làm việc ghi nhận lại quá trình truy cập của người sử dụng khi họ thăm viếc
trang web của bạn lần đầu. 1.1.6.1. Session
Đối tượng Session được xem như là một đối tượng cho phép bạn truyền truyền
giá trị từ trang PHP này sang trang PHP trong cùng 1 website.Session được sinh ra và
mất đi khi người sử dụng hủy chúng, thời gian sống của chúng đã hết, hoặc người sử dụng đóng trình duyệt.
Khi muốn sử dụng Session thì chúng ta phải khởi tạo chúng trong trang PHP mà
chúng ta muốn sử dụng và đặt ở đầu trang bằng hàm:
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217 session_start();
Tuy nhiên, bạn có thể cấu hình trong trang php.ini (1: start) session.auto_start=0;
Khai báo và gán giá trị cho biến session.
$_SESSION[“chỉ_số”]=giá_trị;
Sau khi khởi động và lưu thông tin, các session này có hiệu lực trên mọi trang PHP
mà người dùng truy cập website tương ứng với Browser đang mở.
Để hủy session chúng ta dùng hàm session_unser() hoặc session_destroy().
Hàm session_unser(): Dùng hủy bỏ các biến session đang có hiệu lực. Ngoài ra muốn
hủy bỏ một biến nào đó thì ta phải truyền tham số cho hàm.
Hàm session_destroy(): Kết thúc tất các các session và dữ liệu trong đó. 1.1.6.2. Cookie
Cookie thường được sử dụng để xác định người sử dụng, nó cũng được xem là session
nhưng nó lưu thông tin trên trình khách (client).
Tại một thời điểm nào đó, máy tính yêu cầu một trang web cùng với trình duyệt
Browser thì nó cũng gửi cookie đi kèm, Thiết lập cookie:
Muốn thiết lập cookie ta sử dụng hàm setcookie để gán giá trị cho cookie theo cú pháp:
setcookie("tên cookie","giá trị", thời gian sống);
Tên cookie là tên mà chúng ta đặt cho phiên làm việc.
Giá trị là thông số của tên cookie. Ví dụ:
setcookie("username","admin", time() +3600)
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
Như ví dụ trên ta thấy với tên là username và giá trị là admin, có thời gian sống là 1
giờ tính từ thời điểm thiết lập. C
hú ý: Kịch bản cookie phải đặt trên mọi giá trị trả về bao gồm thẻ HTML và lệnh echo.
Kịch bản cookie phải đặt trên mọi giá trị trả về bao gồm thẻ HTML và lệnh echo. Sử dụng cookie:
Để sử dụng lại cookie vừa thiết lập, chúng ta sử dụng cú pháp: $_COOKIE["tên cookies"]
Tên cookie là tên mà chúng ta thiết lập phía trên. Hủy Cookie:
Để hủy 1 cookie đã được tạo ta có thể dùng 1 trong 2 cách sau:
+ Cú pháp: setcookie("Tên cookie")
Gọi hàm setcookie với chỉ duy nhất tên cookie mà thôi.
+ Dùng thời gian hết hạn cookie là thời điểm trong quá khứ.
Ví dụ: setcookie("name","LAP TRINH",time()-3600); [2] 1.2. Tìm hiểu MYSQL
1.2.1. Giới thiệu cơ sở dữ liệu
MySQL là ứng dụng cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay (theo
www. mysql. com) và được sử dụng phối hợp với PHP. Trước khi làm việc với
MySQL cần xác định các nhu cầu cho ứng dụng.
MySQL là cơ sở dữ có trình giao diện trên Windows hay Linux, cho phép người
sử dụng có thể thao tác các hành động liên quan đến nó. Việc tìm hiểu từng công nghệ
trước khi bắt tay vào việc viết mã kịch bản PHP, việc tích hợp hai công nghệ PHP và
MySQL là một công việc cần thiết và rất quan trọng.
1.2.2. Mục đích sử dụng cơ sở dữ liệu.
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
Mục đích sử dụng cơ sở dữ liệu bao gồm các chức năng như: lưu trữ (storage),
truy cập (accessibility), tổ chức (organization) và xử lí (manipulation).
Lưu trữ: Lưu trữ trên đĩa và có thể chuyển đổi dữ liệu từ cơ sở dữ liệu này sang
cơ sở dữ liệu khác, nếu bạn sử dụng cho quy mô nhỏ, bạn có thể chọn cơ sở dữ liệu
nhỏ như: Microsoft Exel, Microsoft Access, MySQL,Microsoft Visual FoxPro… Nếu
ứng dụng có quy mô lớn, bạn có thể chọn cơ sở dữ liệu có quy mô lớn như: Oracle, SQL Server…
Truy cập: Truy cập dữ liệu phụ thuộc vào mục đích và yêu cầu của người sử
dụng, ở mức độ mang tính cục bộ, truy cập cơ sỏ dữ liệu ngay trong cơ sở dữ liệu với
nhau, nhằm trao đổi hay xử lí dữ liệu ngay bên trong chính nó, nhưng do mục đích và
yêu cầu người dùng vượt ra ngoài cơ sở dữ liệu, nên bạn cần có các phương thức truy
cập dữ liệu giữa các cơ sở dử liệu với nhau như: Microsoft Access với SQL Server,
hay SQL Server và cơ sở dữ liệu Oracle....
Tổ chức: Tổ chức cơ sở dữ liệu phụ thuộc vào mô hình cơ sở dữ liệu, phân tích và
thiết kế cơ sở dữ liệu tức là tổ chức cơ sở dữ liệu phụ thuộc vào đặc điểm riêng của
từng ứng dụng. Tuy nhiên khi tổ chức cơ sở dữ liệu cần phải tuân theo một số tiêu
chuẩn của hệ thống cơ sở dữ liệu nnhằm tăng tính tối ưu khi truy cập và xử lí.
Xử lí: Tùy vào nhu cầu tính toán và truy vấn cơ sở dữ liệu với các mục đích khác
nhau, cần phải sử dụng các phát biểu truy vấn cùng các phép toán, phát biểu của cơ sở
dữ liệu để xuất ra kết quả như yêu cầu. Để thao tác hay xử lí dữ liệu bên trong chính
cơ sở dữ liệu ta sử dụng các ngôn ngữ lập trình như: PHP, C++, Java, Visual Basic…
1.2.3. Các thao tác cập nhật dữ liệu.
SELECT (Truy vấn mẫu tin):Select dùng để truy vấn từ một hay nhiều bảng
khác nhau, kết quả trả về là một tập mẫu tin thỏa mãn các điều kiện cho
trước nếu có, cú pháp của phát biểu SQL dạng SELECT như sau: SELECT [FROM] [WHERE] [GROUP BY]
[HAVING<điều kiện bắt buộc của GROUP BY>]
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217 [ORDER BY] [LIMIT FromNumber |ToNumber] INSERT(Thêm mẫu tin):
Cú pháp: INSERT INTO Tên_bảng VALUES(Bộ_giá_trị)
UPDATE(Cập nhật dữ liệu):
Cú pháp: UPDATE TABLE Tên_bảng
SET Tên_cột=Biểu_thức,... [WHERE Điều_kiện] DELETE(Xóa mẫu tin):
Cú pháp: DELETE FROM Tên_bảng [WHERE Điều_kiện] 1.3. HTML, CSS.
1.3.1. Tìm hiểu về HTML 1.3.1.1. Khái niệm
HTML là chữ viết tắt của Hypertext Markup Language ( Ngôn ngữ đánh dấu
siêu văn bản). Nó giúp người dùng tạo và cấu trúc các thành phần trong trang web
hoặc ứng dụng, phân chia các đoạn văn, heading, links
*Một phần tử HTML thường được xác định dựa trên ba thành phần: - Thẻ mở
- Nội dung nằm bên trong cặp thẻ (hay còn được gọi là nội dung của phần tử) - Thẻ đóng
Hình 1 Cấu trúc của một trang HTML
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
1.3.1.2. Các thuật ngữ HTML phổ biến - ELEMENT
Các element là các chỉ định xác định cấu trúc và nội dung của các đối tượng trong
một trang. Một số yếu tố được sử dụng thường xuyên hơn bao gồm nhiều cấp độ tiêu
đề (được xác định là đến ) và đoạn văn (được xác định là
); danh sách
tiếp tục bao gồm , , , , và , và nhiều hơn nữa nhiều.
Các element được xác định bằng cách sử dụng dấu ngoặc nhỏ hơn và lớn hơn < > bao quanh tên element. - TAGS
Việc sử dụng các dấu ngoặc nhỏ hơn và lớn hơn bao quanh một element sẽ tạo ra cái
được gọi là thẻ. Thẻ thường xảy ra nhất trong các cặp thẻ mở và đóng.
Một thẻ mở đánh dấu sự bắt đầu của một element. Nó bao gồm một dấu nhỏ hơn theo
sau là tên của một element và sau đó kết thúc bằng dấu lớn hơn; ví dụ, .
Một thẻ đóng đánh dấu vào cuối của một element. Nó bao gồm một dấu nhỏ hơn đến
dấu gạch chéo và tên của element và sau đó kết thúc bằng dấu lớn hơn; ví dụ, .
Nội dung nằm giữa thẻ mở và thẻ đóng là nội dung của element đó. Ví dụ, một liên
kết anchor sẽ có thẻ mở và thẻ đóng . Những gì rơi vào giữa hai thẻ này sẽ là
nội dung của liên kết anchor đó. - ATTRIBUTES
Các attribute là các thuộc tính được sử dụng để cung cấp thông tin bổ sung về một
element. Các thuộc tính phổ biến nhất bao gồm thuộc tính id, xác định một
element; các thuộc tính class, phân loại một element; thuộc tính src, trong đó xác định
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
một nguồn cho nội dung nhúng; và thuộc tính href, cung cấp một tham chiếu
hyperlink đến một tài nguyên được liên kết.
Các thuộc tính được xác định trong thẻ mở, sau tên của một thành phần. Nói chung
các thuộc tính bao gồm tên và giá trị. Định dạng cho các thuộc tính này bao gồm tên
thuộc tính theo sau là dấu bằng và sau đó là giá trị thuộc tính được trích dẫn. Ví dụ:
một element bao gồm một thuộc tính href sẽ trông như sau: Shay Howe
1.3.2. Tìm hiểu về CSS 1.3.2.1. Khái niệm
CSS (hay Cascading Style Sheet language) được định nghĩa là ngôn ngữ tạo
phong cách cho trang web. CSS sẽ tạo phong cách và định kiểu cho các yếu tố được
viết dưới dạng ngôn ngữ đánh dấu (HTML). Nó giúp người dùng tiết kiệm thời gian
và công sức viết web nhờ khả năng điều khiển định dạng của nhiều trang web cùng lúc.
CSS phân biệt từng cách hiển thị của trang web bằng cách điều khiển các thành
phần bố cục, font chữ và màu sắc. CSS được phát triển bởi W3C (World Wide Web
Consortium) vào năm 1996 do HTML không thể gắn tag giúp định dạng trang web.
1.3.2.2. Các thuật ngữ CSS phổ biến - S E L E C T O R S
Khi các yếu tố được thêm vào một trang web, chúng có thể được tạo kiểu bằng
CSS. Selector chỉ định chính xác thành phần nào trong HTML để nhắm mục tiêu và
áp dụng các kiểu (như màu sắc, kích thước và vị trí) vào. Selector có thể bao gồm sự
kết hợp của các vòng loại khác nhau để chọn các yếu tố duy nhất, tất cả tùy thuộc vào
mức độ cụ thể mà chúng tôi muốn. Ví dụ: chúng tôi có thể chọn mỗi đoạn trên một
trang hoặc chúng tôi có thể chỉ muốn chọn một đoạn cụ thể trên một trang.
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
Các selector thường nhắm mục tiêu một giá trị thuộc tính, chẳng hạn như một id
hoặc class hoặc nhắm mục tiêu loại phần tử, chẳng hạn như hoặc
.
Trong CSS, các selector được theo sau với dấu ngoặc nhọn, {}, bao gồm các kiểu
được áp dụng cho phần tử được chọn. Selector ở đây đang nhắm mục tiêu tất cả
các
. - P R O P E R T I E S
Khi một phần tử được chọn, một thuộc tính sẽ xác định các kiểu sẽ được áp dụng cho
phần tử đó. Tên thuộc tính nằm sau selector, trong dấu ngoặc nhọn {} và ngay trước
dấu hai chấm, :. Có rất nhiều thuộc tính chúng ta có thể sử dụng, chẳng hạn
như background, color, font-size, height, và width, và các thuộc tính mới thường được
thêm vào. Trong đoạn code sau, chúng tôi đang xác định các thuộc tính color và font-
size được áp dụng cho tất cả các
: p { color: …; font-size: …; } - VALUES
Cho đến nay, đã chọn một element với selector và xác định kiểu muốn áp dụng với
property. Bây giờ có thể xác định hành vi của property đó với một value. Các giá trị
có thể được xác định là văn bản giữa dấu hai chấm :, và dấu chấm phẩy, ;. Ở đây c
đang chọn tất cả các
và đặt giá trị của thuộc color thành orange và giá trị của
thuộc tính font-size là 16 pixel. p {
Downloaded by Van Le (mrl3v4n@gmail.com)
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
PHẦN II BÁO CÁO TIẾN ĐỘ TIỂU LUẬN ĐỢT 1
Nguồn tham khảo: https://ninjaashub.blogspot.com/2022/10/responsive-e- commerce-fashion-website.html
Những thứ hiện tại đã làm được: 1. Trang chủ: 2. Chăm sóc khách hàng:
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217 3. Danh sách sản phẩm:
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
PHẦN III BÁO CÁO TIẾN ĐỘ TIỂU LUẬN ĐỢT 2
Những thứ hiện tại đã làm được tiếp theo: 1. Form đăng nhập: 2. Form đăng ký:
Downloaded by Van Le (mrl3v4n@gmail.com) lOMoARcPSD|25518217
PHẦN IV BÁO CÁO TIẾN ĐỘ TIỂU LUẬN ĐỢT 3
Hiện tại đang tiếp tục làm chức năng giỏ hàng và cập nhật lại giao diện website.
Downloaded by Van Le (mrl3v4n@gmail.com)