Cơ chế lập trình WEB Cơ chế lập trình WEB Web tĩnh: Client (IE, Netscape, ..) Web server http://localho st http:// www.vnn.vn Trang HTML
Cơ chế lập trình WEBCơ chế lập trình WEB
Web tĩnh:
Client
(IE, Netscape,..)
Web server
http://localhost
http://www.vnn.vn
Trang HTML
Cơ chế lập trình WebCơ chế lập trình WebWeb động
Client
(IE, Netscape,..)
Web server
http://localhost
http://www.vnn.vnPHP, ASP,JSP,..
PHP, ASP,JSP,...biên dịch
Database
HTML
SQL Server, My SQL,..
Cơ chế lập trình WebCơ chế lập trình WebServer SideSử dụng các NNLT để lập trình WEB ở
phía Server, nghĩa là trang web sẽ được biên dịch và xử lý từ phía Server rồi mới gửi về trình duyệt
PHP, ASP, JSP,. NET là các NNLT Server side– Kết nối CSDL trên Server– Tính toán trên dữ liệu– Tìm kiếm
Cơ chế lập trình WebCơ chế lập trình Web
Client sideSử dụng các NNTL xử lý ở phía
Client rồi mới gửi yêu cầu đên ServerJavaScript là NNLT phổ biến
– Kiểm tra dữ liệu trên form– Tạo hiệu ứng trên hình ảnh– ...
Web serverWeb serverLà phần mềm đảm nhiệm vai trò Server
cung cấp dịch vụ WEBHỗ trợ các công nghệ khác nhau
– IIS (Internet Information Service): Hỗ trợ ASP, mở rộng hỗ trợ PHP
– Apache: Hỗ trợ PHP– Tomcat: Hỗ trợ JSP (Java Servlet Page)
Web ServerWeb Server
IP: 203.162.0.12
www.vnn.vn
C:\inetpub\www
Web Server
Client
-IE
-Netscape
-..
DNS
Database
Web ServerWeb Server
-IIS-Apache
MySQL Database
Client
-IE
-Netscape
-Mozila,...
PHP
Trang PHP là 1 trang HTML có nhúng mã PHPĐể minh hoạ cho điều này, ta hãy xem qua một số ví dụ sau:Ví dụ 1: lưu file sau lên đĩa với tên vd1.php và chạy thử:
<html><head><title>Testing page</title></head><body><?php echo "Hello, world!"; ?></body></html>
<html><head><title>Testing page</title></head><body>Hello, World!</body></html>
Tiếng Việt trong WEBTiếng Việt trong WEB
Sử dụng Unikey chọn bộ gõ UTF-8
<?php echo "<html><head><title>Testing page</title></head><body>Hello, world!</body></html>"; ?>
Bạn cũng nhận được 1 trang HTML có source là: <html><head><title>Testing page</title></head><body>Hello, World!</body></html
Như vậy có thể nhận xét rằng 1 trang PHP cũng chính là 1 trang HTML có nhúng mã PHP ở bên trong và có phần mở rộng là .php. Phần mã PHP được đặt trong thẻ mở <?php và thẻ đóng ?>. Khi trình duyệt truy cập vào 1 trang PHP, server sẽ đọc nội dung file PHP lên, lọc ra các đoạn mã PHP, thực thi các đoạn mã đó, lấy kết quả xuất ra của các đoạn mã PHP thay thế vào chỗ ban đầu của chúng trong file PHP, cuối cùng server trả về kết quả cuối cùng là 1 trang nội dung HTML về cho trình duyệt.
Lệnh echo dùng để xuất 1 chuỗi văn bản về trình duyệtỞ các ví dụ bên trên, ta đã dùng 1 lệnh của PHP là lệnh echo. Lệnh này dùng để xuất 1 chuỗi văn bản về cho trình duyệt.
Ví dụ câu lệnh echo "Hello, world!"; trình duyệt sẽ nhận được chỗi văn bản Hello, world!.Câu lệnh echo 1+2; sẽ trả về cho trình duyệt chỗi văn bản 3.Và câu lệnh echo 1+2, "Hello, world!"; sẽ trả về trình duyệt chỗi 3Hello, world!.
Phân cách các lệnh bằng dấu chấm phảy (;)Tương tự như các ngôn ngữ lập trình C hoặc Pascal, 1 câu lệnh của PHP được kết thúc bằng dấu chấm phảy (;). Ví dụ:echo 1+2;echo "Hello, world!";
Chú thích trong chương trìnhChú thích 1 dòng được bắt đầu bằng // hoặc #, và những gì được ghi từ đó về sau là chú thích. Chú thích nhiều dòng được bắt đầu bằng /* và kết thúc bằng */, những gì ở giữa là chú thích.
TRUYỀN TT QUA CÁC TRANGTRUYỀN TT QUA CÁC TRANG
Sử dụng FORMSử dụng SESSIONSử dụng URL
<form action=“URL” method =“POST”> <input … name =“n1”> <input … name =“n1”> .. </form>
$v1= $_POST[“n1”] $v2= $_POST[“n2”]
Method =“POST”Method =“POST”
Chỉ truyền được thông tin qua FORM.
<form action=“URL” method =“GET”> <input … name =“n1”> <input … name =“n1”> .. </form>
$v1= $_GET[“n1”] $v2= $_GET[“n2”]
Method=“GET”Method=“GET”
TT được truyền trên URLhttp://www.duylinhmobile.com/index.php?dl=detail&c=1&i=147
………..x.php?n1=Nam&n2=TPVinh
SESIONSESIONKhởi động:
<?php
session_start();
?>
Đặt đầu tiên của trang PHP
Gán giá trị:khởi đầu.
if (!isset($_SESSION[“n1”])
{ $SESSION[“n1”]=giá trị;}
Gán giá trị cho biến SESSION đã tồn tại
$SESSION[“n1”]=giá trị;
Truyền TT qua URL?http://www.duylinhmobile.com/index.php?dl=detail&c=1&i=147
Ứng dụng phương pháp GET để đưa thông tin lên URL
<a href =“x.php”? Id=1&name=Nokia > Chi tiet </a>
…x.php?id=1 & name=Nokia
$id=$_GET[“id”]
$name=$_GET[“name”]
Lấy thông tin từ URL?
Ứng dụng của PP truyền TT trên URLỨng dụng của PP truyền TT trên URL
Trong một số trường hợp không thể sử dụng FORM để truyền thôn tin
Nhưng cũng không hiệu quả nếu dùng SESSION
Ví dụ: Xem chi tiết của một sản phẩm bằng cách nháy
chuột vào hình ảnh Xem chi tiết thông tin của một người bằng cách
nháy chuột vào tên
Ví dụVí dụ$id=01;$name =“Nokia”; Echo “<a href=\“xem.php\”?id=$id&n=$name> Chi tiet </a>
Chi tiet
…xem.php?id=01&n=Nokia
Tổ chức các tệp tin trong một Web siteTổ chức các tệp tin trong một Web site
includes
baitap
images
Các tệp thư viện
HTML
PHP
functions.phpconnect.phpconsts.php
logo.jpgnokia.jpg
index.phpleft.phpright.phptop.php
Chèn tệp tinChèn tệp tin PHP cho phép chèn các tệp tin đã có vào một vị trí nào
đó trong tệp tin hiện tại Include “path/filename”; hoặc require “path/filename”;
Index.php trong thư mục baitap <?php include “./includes/functions.php”; include “./includes/connect.php”; include “./includes/consts.php”; …
PHP và MySQLPHP và MySQL
Không có MySQL thì PHP không thể phổ biến như hiện nay??MySQL là hệ quản trị CSDL miễn phí rất
phù hợp với các ứng dụng trên InternetHầu hết các HOST đều hỗ trợ MySQL và
PHPPHP chứa các hàm hỗ trợ làm việc với
CSDL MySQLhttp://www.mysql.nethttp://www.php.net
Web ServerWeb Server
-IIS-Apache
MySQL Database
Client
-IE
-Netscape
-Mozila,...
PHP
My SQLMy SQL Là hệ quản trị CDSL miễn phí Đủ mạnh để quản lý dữ liệu Không có giao diện đồ hoạ Cần sử dụng Công cụ để làm giao diện hoặc
dùng công cụ PHP admin Tạo lập CSDL Tạo các bảngPhân quyền sử dụng (account): Sau khi cài đặt
thông thường: root là tài khoản quản trị và mật khẩu để trắng
CSDL quan hệCSDL quan hệ
Quan hệ R với các thuộc tính a1,a2,..an được thể hiện là
R(a1,a2,…an)
Trong đó a1,a2,…an là các thuộc tính của R
Ví dụ: Quan hệ sinhvien
sinhvien(masv,tensv,ns,qq,magv)
Quan hệ monhoc
monhoc(mamon,tenmon,dvht,mgv)
Mỗi thuộc tính ai sẽ có miền giá trị (DOM(ai)): Đó là tập hợp những giá trị mà ai có thể chứa
Các thuộc tính của R được gọi là Trường (field) Miền giá trị DOM(ai) của một thuộc tính ai gọi là kiểu
dữ liệu cho trường ai Một quan hệ có thể có rất nhiều phần tử. Mỗi phần tử
trong quan hệ R là một bộ r=(va1, va2,…,van) Trong đó va1, va2,..van là các giá trị cụ thể thoã mãn
va1 DOM(a1), va2 DOM(a2),… Vd: Xét quan hệ sinhvien r=(‘43B01’,’Tran Van An’,’10/02/1980’,’Tp Vinh’,’IT01’) hoặc r=(‘CS03’,’Lập trình PHP’,4,’IT03’)
CSDL quan hệCSDL quan hệ
Ví dụ quan hệ Ví dụ quan hệ giaoviengiaovien
Magv Tengv CV
IT01 Lê Ngoc Xuân PCN khoa
IT02 Phạm Quang Trình PCN Khoa
IT03 Nguyễn Quang Ninh GV
IT04 Đặng Hồng Lĩnh GV
IT05 Trần Xuân Hào GV
masv tensv ns qq magv
43B01 Trần Văn An 10/11/1980 Tp Vinh IT01
43B02 Nguyễn Văn Hùng 02/04/1981 Hà Tĩnh IT03
42B02 Hoàng Văn Nam 03/04/1980 Thanh Hoá IT01
43B01 Nguyễn Nam Anh 03/05/1982 Tp Vinh IT05
Tập hợp các phần tử của quan hệ SINHVIEN
Khoá chính: Primary Key của R(a1,a2,..an) là một hoặc một số trường sao cho giá trị của khoá chính sẽ xác định tính duy nhất của một phần tử
Bản ghi: Record: Là một phần tử của quan hệ R hay còn gọi là một hàng
Mối quan hệ giữa các quan hệMối quan hệ giữa các quan hệ Thể hiện mối quan hệ thực sự giữa các phần tử của
hai quan hệ nào đó Ví dụ: Một sinh viên do một giáo viên hướng dẫn Một giáo viên có thể hưỡng dẫn nhiều sinh viên -Một môn do nhiều giáo viên giảng dạy -Một giáo viên có thể giảng dạy nhiều môn Khoá ngoại lai: (Foreign key): Là trường kết nối hai
quan hệ Vi dụ: Trong quan hệ sinhvien chúng ta có trường
magv
Thể hiện mối quan hệThể hiện mối quan hệgiaovienSienvien
masv tensv qq magv
43B01 Trần Văn An Tp Vinh IT01
43B02 Nguyễn Văn Hùng Hà Tĩnh IT03
42B02 Hoàng Văn Nam Thanh Hoá IT01
43B01 Nguyễn Nam Anh Tp Vinh IT05
Magv Tengv CV
IT01 Lê Ngoc Xuân PCN khoa
IT02 Phạm Quang Trình
PCN Khoa
IT03 Nguyễn Quang Ninh
GV
IT04 Đặng Hồng Lĩnh GV
IT05 Trần Xuân Hào GV
Cơ sở dữ liệuCơ sở dữ liệu
Là một tập hợp các quan hệ có mối quan hệ với nhau Có nhiều phần mềm chuyên hỗ trợ tạo và quản lý dữ
liệu: SQL Server, MySQL, Oracle,.. Ngôn ngữ xử lý trên CSDL điển hình là: SQL
PHP với MySQL PHP với MySQL Kết nối đến MySSQL mysql_connect(sv,username,pass) cho kết quả là
một biến kiểu resource. Là một con trỏ kết nối đến MySQL hoặc trả về một lỗi kết nối
Vd: $link =mysql_connect(“localhost”,”root”,””)
or die(“Không kết noi được”.mysql_error());
Đóng kết nối: mysql_close(conn);
Vd: mysql_close($link);
Chọn CSDL đã có:mysql_select_db(db,conn) trong đó db là tên CSDL,
conn là biến kết nối
Vd: mysql_select_db(“sinhvien”,$link) ;
Thực hiện câu lệnh SQL mysql_query(sql) trong đó sql là câu lệnh SQL
cần thực hiện. Kết quả trả về tuỳ thuộc vào câu lệnh SQL
Vd 1: sql =“SELECT * from SINHVIEN”; $rs= mysql_query(sql); $rs là tập các bản ghi của bảng sinhvien Vd2: sql= “CREATE DATABASE shop”; Mysql_query(sql) or die (“Loi”.mysql_error()); Một CSDL được tạo ra hoặc thong báo lỗi
PHP với MySQL PHP với MySQL
$rows = mysql_num_rows($rs); cho kết quả là số dòng được trả về trong $rs
$r = mysql_fetch_row($rs); cho kết quả là một bản ghi hiện tạicủa $rs
$rs= mysql_query(“SELECT * FROM PRODUCT”,$link);
while ($r = mysql_fetch_row($rs))
{print "<tr>";
print "\t<td><font face=arial size=1/> $r[0] </font></td>";
print "\t<td><font face=arial size=1/>
<a href =\"index.php\"?p=$r[0] > $r[1] </a></font></td>";
print "\t<td width =\"30%\"><font face=arial size=1/> $r[1] </font></td>";
print "\t<td width =\"60%\"><font face=arial size=1/> $r[2] </font></td>";
print "\t<td width =\"60%\"><font face=arial size=1/> $r[3] </font></td>";
print "</tr>\n";
}
Câu lệnh SQLCâu lệnh SQLSELECT field1, field2,.. FROM table
WHERE ConditionVd: SELECT * FROM PRODUCTChọn tất cả các bản ghi trong bảng
PRODUCTVd2: SELECT id, name, des, pic
FROM PRODUCT WHERE id=‘mo01’
INSERT INTO table VALUE(v1,v2,…,vn) Vd01: INSERT INTO PRODUCT VALUE ($id,$name,$des,$pic)
Vd2: INSERT INTO PRODUCT VALUE (3,’Nokia’,’Dien
Thoai’,’nokia.jpg’)
Câu lệnh SQLCâu lệnh SQL
UPDATE table SET field1=v1, field2=v2,… WHERE Condition
Vd01: UPDATE PRODUCT SET PIC =$pic WHERE id=$id Vd02: UPDATE PRODUCT SET PIC =‘samsung.jpg’
WHERE id=‘mo01’
Câu lệnh SQLCâu lệnh SQL
DELETE FROM table WHERE Condition
Vd01: DELETE FROM PRODUCT WHERE id=$id
Câu lệnh SQLCâu lệnh SQL
Tạo CDSL CREATE DATABASE SHOP Tạo bảng CATE CREATE TABLE CATE(cateid varchar(5)
not null, catename varchar(60))
Tạo bản PRODUCT CREATE TABLE PRODUCT(id int not null,
name varchar(80), des varchar(100), pic varchar (50),cateid varchar(5), PRIMARY KEY (id))
Câu lệnh SQLCâu lệnh SQL
Câu lệnh SQLCâu lệnh SQL
Xoa CSDL da co:
DROP DATABASE name
Vd: DROP DATABASE shop
Xoa bang
DROP TABLE name
Vd: DROP TABLE cate
Bài tập:Bài tập:
Tọ một bài tập có tên là SHOPTrong đó có chứa:shop\imagesshop\includes
Thư mục SHOP chứa các trang PHP và HTML chính
Thư mục Shop\Include thì chứa các thư viện kết nối, hàm, định nghĩa hằng
Thư mục Shop\Image chứa các tệp tin ảnh
include "./includes/connect.php"; mysql_query("DROP DATABASE shop") or die
("Khong xoa duoc CSDL".mysql_error()); mysql_query("CREATE DATABASE shop",$link)
or die ("loi tao CSDL".mysql_error()); mysql_select_db("shop"); mysql_query("create table Cate(cateid varchar(5)
not null,catename varchar(60), PRIMARY Key (cateid))") or die ("Khong tao duoc bang".mysql_error());
mysql_query("Create table Product(id int not null, name varchar(50), des varchar(100),pic varchar(50), price int, PRIMARY KEY(id))") or die ("khong tao duoc bang".mysql_error());
?>
Hàm mysql_num_rows($rs) cho kết quả là số bản ghi
Hàm mysql_result($rs,i,fieldname)cho kế quả là giá trị của trường
fieldname tại bản ghi thứ iVới i bắt đầu =0
Trang Admin Trang Admin Yêu cầu của một hệ thống ứng dụng
WEB
+ Có thể phát triển theo hướng: Module cập nhật xây dựng trên các NNLT khác nhau có làm việc với CSDL: Visual Basic, Visual C, ...
+ Cập nhật bằng Web
Phân quyền sử dụng
Phân quyền?Phân quyền?Cần có bảng quản lý người sử dụng
trong CSDL
uername quyen pass
admin f 12345
edit e 123r
Truy cập trang AdminTruy cập trang Admin
Tên đăng nhập
mật khẩu
Truyền username và mật khẩu qua các trang bằng nhiều cơ chế khác nhau
- bằng dữ liệu ẩn
- Bằng session
VD: Trang xử lý LoginVD: Trang xử lý Login
$u= $_POST[“u” ]; $p =$_POST[“p” ]; $_SESION[“u” ]=$u; $_SESION[“p” ]=$p Hoặc sử dụng Form để u và Pass qua các trang <input type =“Hidden” name =“u” value = <?
PHP echo $u ?> > <input type =“Hidden” name =“p” value = <?
PHP echo $p ?> >
Thực hành: Tạo trang LoginThực hành: Tạo trang Login
- Mở tệp tin Install.php - Đóng những lệnh không càn thiết - Tạo thêm một bảng users có các trường:
– u Varchar (20)– p Varchar (20)– quyen int – Tạo trang nhập người dùng cho bảng này– Tạo trang Login