Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP
Tóm tắt Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP: ... bất kỳ máy tính nào chẳng cần quan tâm tới cái gì là client hay cái gì là server. Ứng dụng Web thì khác hẳn, phải có một mô hình server có thể là một máy tính làm server thôi, nhằm tập trung hoá việc xử lý dữ liệu. Còn các client, còn được hiểu nôm na là máy tính của người sử dụng phải được nối...cho $a; } ?> c. Phát biểu elseif Trong trường hợp có nhiều hơn 2 điều kiện tùy chọn thì bạn phải chọn phát biểu elseif <?php $soluong=10; if($soluong<10) $giamgia=10; elseif ($soluong>=10 && $soluong<=20) $giamgia=20; elseif ($soluong>20 && $soluong<=30) $giam...duFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 42 Đánh dấu check vào mục NEW để tạo mới các bảng này trong database mới. Click phím next, cửa sổ sau xuất hiện: Nếu bạn muốn điều chỉnh cấu trúc từng bảng thì thao tác trên cửa sổ này. Click phím next, cửa sổ sau xuất hiện: eduFi...
biểu Select với AS · Cho phép thay đổi tên fiield hay đặt tên mới cho 1 gia trị tính tóan trong select Select productname, count(productid) as tongso, Sum(unitprice) as tonggia, max(unitprice) as giacaonhat,min(unitprice) as giathapnhat, AVG(unitprice) as giatrungbinh from products group by productID f) Phát biểu Select với các hàm thư viện Ø Các hàm sử lý chuỗi · Hàm ASCII : cho biết mã ASCII của ký tự Select ASCII(‘A’) · Hàm CHAR : cho biết ký tự tương ứng với mã ASCII Select CHAR(65) · Hàm UPPER: Chuyển sang chữ hoa Select UPPER(‘hoa sen’) Hiển thị danh sách tên khách hàng toàn chữ hoa Select CustomerID,Upper(Contactname) as TenKH from customers · Hàm LOWER: Chuyển sang chữ thường eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 52 Select LOWER(‘HOA SEN’) Hiển thị danh sách tên khách hàng toàn chữ thường Select CustomerID, Lower(Contactname) as TenKH from customers · Hàm LTRIM: Cắt bỏ khỏang trắng bên trái chuỗi Select LTRIM(‘ hoa sen’) · Hàm RTRIM: Cắt bỏ khỏang trắng bên phải chuỗi Select RTRIM(‘hoa sen ’) · Hàm LEFT: Trích n ký tự bên trái của chuỗi Select LEFT(‘hoa sen’,2) Lấy 3 ký tự đầu của cột Country Select contactname, left(country,3) as Quoctich from customers · Hàm RIGHT: Trích n ký tự bên phải của chuỗi Select RIGHT (‘hoa sen’,3) Lấy 3 ký tự cuối của cột CustomerID Select right(CustomerID,3) as makh , contactname from customers · Hàm INSTR: Cho biết vị trí của chuỗi con trong chuỗi mẹ Select INSTR(‘Truong Hoa Sen’ ,‘Hoa’) Ø Các hàm sử lý số · Hàm SQRT: cho căn bậc 2 của 1 số Select SQRT(100) · Hàm ROUND: làm tròn số lẻ : - làm tròn phần nguyên, + làm tròn phần số lẻ Select ROUND(143.69,1) à 143.7 hay Select ROUND (143.69,-1) à 140 Làm tròn đơn giá còn 1 số lẻ Select ProductName, round(unitprice,1) from products Ø Các hàm sử lý thời gian · Hàm CurDate: Cho ngày hiện hành của hệ thống Select Curdate() as ‘Hom Nay la’ · Hàm CurTime: Cho giờ hiện hành của hệ thống Select CurTime() as ‘Bay gio la’ · Hàm Day (ngay): Trích ngày Select Day(Curdate()) as ‘Trich ngay’ · Hàm Month (ngay): Trích tháng Select Month(Curdate()) as ‘Trich thang’ · Hàm Year (ngay): Trích năm Select Year(Curdate()) as ‘Trich nam’ eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 53 · Hàm DayofMonth (ngay): Cho biết ngày thứ mấy trong tháng Select DayofMonth (Curdate()) as ‘Ngay trong thang’ · Hàm DayofYear (ngay): Cho biết ngày thứ mấy trong năm Select DayofTear (Curdate()) as ‘Ngay trong nam’ · Hàm DayofWeek (ngay): Cho biết ngày thứ mấy trong Tuần Select Dayofweek (Curdate()) as ‘Ngay trong tuần’ Ví dụ : · Lấy ra các hóa đơn đặt hàng trong tháng 8 Select * from orders where month(orderdate)=8 · Lấy ra các hóa đơn đã giao hàng trong tháng 2 và tháng 4 năm 1995 Select * from orders where month(Shippeddate) in(2,4) and year(Shippeddate)=1995 · Lấy ra các hóa đơn đặt hàng trong 10 ngày đầu tiên của tháng 8/1994 Select * from orders where day (orderdate) <=10 and month(orderdate)=8 and year(orderdate)=1994 g) Phát biểu Select với Limit N,M · Cho phép truy vấn số lượng record từ vị trí thứ n (bắt đầu bằng 0) select * from orders limit 2,10 · Lấy 10 record đầu tiên select * from orders limit 0,10 · Lấy 10 hóa đơn đặt hàng mới nhất select * from orders order by orderdate desc limit 0,10 h) Phát biểu Select với Distinct · Lọai bỏ các record có field chỉ định trùng lắp Select distinct employeeID from orders Cho biết đã có các khách hàng từ các quốc gia nào đã giao dịch mua bán hàng hóa Select distinct(Country) from customers i) Phát biểu Select với Case · Tạo một field mới với giá trị có điều kiện từ các fileds khác (tạo mới cột taxproduct với đie72u kiện sau : nếu hàng trong kho dưới 30 mặt hàng thì miễn thuế, còn lại thì tính 2% tổng thành tiền ) select unitprice,unitsinstock , (case when unitsinstock<=30 then 0 else unitprice * unitsinstock * 2/100 end) as TaxProduct from products b. Phát biểu INSERT Ø Insert dữ liệu vào bảng lấy giá trị cụ thể Cú pháp : INSERT INTO [] VALUES (giá trị cho từng field) eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 54 · Thêm 1 record vào bảng products INSERT INTO products(productid, productname, supplierid,categoryid, Quantityperunit, unitprice, unitsinstock,unitsonorder,reorderlevel,discontinued) VALUES (78, 'CoCA CoLA', 12, 2, '12 boxes', 13, 32, 0, 15, 0) · Thêm 1 record theo thứ tự field trong cấu trúc INSERT INTO products VALUES (78, 'CoCA CoLA', 12, 2, '12 boxes', 13, 32, 0, 15, 0) Ø Insert dữ liệu vào bảng từ giá trị của bảng khác · Lấy các order của nhân viên số 5 cập nhật vào bảng orderlist Insert into orderslist select * from orders where employeeid=5 c. Phát biểu UPDATE Cú pháp : UPDATE SET =,= WHERE · Cập nhật giá trị cụ thể Update Products Set Productname='PEP SI COLA', SupplierID=14 Where Productid=78 · Cập nhật giá trị 1 field lấy từ giá trị field khác Update Products Set UnitPrice= UnitPrice*10 Where Productid=78 · Cập nhật giá trị 1 field lấy từ giá trị field của bảng khác Update products set unitprice=(select Max(orderid) from orders) where productid=78 · Cập nhật giá trị 1 field cụ thể với điều kiện từ bảng khác Update Orders set ShipRegion='Paris' where Customerid in(select customerID from customers where country='France') d. Phát biểu DELETE Cú pháp : DELETE FROM WHERE · Xóa record với điều kiện cụ thể Delete from orders where orderid=’10210’ · Xóa record theo qui tắc có ràng buộc quan hệ với bảng khác Delete from orders where Customerid in(select customerID from customers where country='France') e. Phát biểu SQL dạng JOIN Ø INNER JOIN : Lấy ra nội dung của 2 hay nhiều bảng với điều kiện 2 bên cùng thỏa chung điều kiện ràng buộc. eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 55 Cú pháp : SELECT [field1, field2] FROM [tên bảng 1] INNER JOIN [tên bảng 2] ON [điều kiện joint] WHERE ORDER BY [field] · Lấy danh sách các order kèm theo tên khách hàng và công ty đặt hàng select orderid,orders.customerid,contactname,orderdate from orders inner join customers on customers.customerid=orders.customerid order by orderid · Hiển thị nội dung tòan bộ 2 bảng orders và customers của những order trong tháng 8 select a.*,b.* from orders a inner join customers b on a.customerid=b.customerid where month(orderdate)=8 Ø LEFT JOIN : Lấy ra nội dung của 2 bảng kết hợp nhau theo điêu kiện : Những record của bảng bên trái tồn tại ứng với những mầu tin ở bảng bên phải không tồn tại. Cú pháp : SELECT [field1, field2] FROM [tên bảng bên trái] LEFT JOIN [tên bảng bên phải] ON [bảng trái.field=bảng pảhi .field] WHERE ORDER BY [field] · Lấy ra tất cả những khách hàng mà đã order hàng và cả những khách hàng chưa orders hàng bao giờ select a.*,b.* from Customers a left join orders b on a.customerid=b.customerid order by b.orderid. Ø RIGHT JOIN : Lấy ra nội dung của 2 bảng kết hợp nhau theo điêu kiện : Những record của bảng bên phải tồn tại ứng với những mầu tin ở bảng bên phải không tồn tại. Cú pháp : SELECT [field1, field2] FROM [tên bảng bên trái] RIGHT JOIN [tên bảng bên phải] ON [bảng trái.field=bảng pảhi .field] WHERE ORDER BY [field] · Lấy ra tất cả những khách hàng mà đã order hàng và cả những khách hàng chưa orders hàng bao giờ select a.*,b.* from Orders a Right join Customers b on a.customerid=b.customerid order by b.orderid. f. Phát biểu SQL dạng UNION Ø Union dùng để nối 2 hay nhiều câu truy vấn dạng select lại với nhau. eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 56 Ø Tất cả nhưng truy vấn trong UNION phải cùng số fields. Nếy truy vấn thứ nhất có 2 cột thì truy vấn thứ 2 sử dụng UNION phải có 2 fields tương tự. Ø Kiểu dữ liệu trong các fields của truy vấn thứ 2 phải tương thích với kiểu dữ liệu các cột tương ứng trong truy vấn thứ nhất. · Bảng orders chứa danh sách các order của khách hàng thân thiết còn bảng orderlist chưa danh sách các order của khách hàng vãng lai. Ta muôn có 1 danh sách các order của 2 lọai khách hàng này thì dùng UNION Select companyname,contactname,city, ’khach hang’ as loaidoituong from customers UNION Select companyname,contactname,city, ’nha cung cap’ from Suppliers g. Phát biểu SQL dạng CREATE a. Tạo 1 database Cú pháp : CREATE DATABASE [Database Name] · Tạo mới database QuanLyDichVu Create Database QuanLyDichVu b. Tạo mới 1 table Cú pháp : CREATE TABLE [TableName] ([tênfield1 kiểudữliệu thuộctính], [tênfield2 kiểudữliệu thuộctính),. , PRIMARY KEY ([tên field]) INDEX ([Tên field]) · Tạo mới bảng KHACHANG Create Table KHACHHANG ( CustID int(3) unsigned NOT NULL auto_increment, Username varchar(20) NOT NULL DEFAULT ‘’, PassWord varchar(10) NOT NULL DEFAULT ‘’, CustName varchar(50), Address varchar(100), Tel varchar(20), PRIMARYKEY (CustID), INDEX (CustID) ) h. Phát biểu SQL dạng DROP a. Xóa 1 database Cú pháp : DROP DATABASE [Database Name] eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 57 · Xóa database QuanLyDichVu Drop Database QuanLyDichVu b. Xóa 1 table Cú pháp : DROP TABLE [Table1,Table 2] · Xóa bảng orders và customers Drop Table Orders,Customers VII. Lập trình PHP với cở sở dữ liệu 1. Kết nối cơ sở dữ liệu PHP cung cấp hàm kết nối cơ sở dữ liệu có cú pháp như sau : $link = mysql_connect ("localhost", "root", ""); if(!$link) { echo "not connection!"; exit; } echo "connection ok!"; mysql_select_db("intershop", $link); Cách khác : $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("intershop", $link); 2. đóng kết nối cơ sở dữ liệu Sau khi khai thác CSDL bạn nên đóng lạ thông qua cú pháp sau : $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("Northwind ", $link); . mysql_close($link); 3. Truy vấn cơ sở dữ liệu a. Mở 1 recordset Ta dùng hàm mysql_query() với các tham số sau : cú pháp : mysql_query(chuỗi sql language) mysql_query(chuỗi sql language, biến kết nối DB) <?php $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("Northwind ", $link); $sql=”select * from customers”; $rec=mysql_query($sql,$link); ?> eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 58 b. Đếm số lượng records Ta dùng hàm mysql_num_rows() <?php $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("Northwind", $link); $sql=”select * from customers”; $rec=mysql_query($sql,$link); $i= mysql_num_rows($rec); echo “tong so record : $i”; mysql_close($link); ?> c. Đọc từng record từ recordset Ta dùng hàm mysql_fetch_array() để đọc từng record trong biến $rec, nếu không tồn tại record nào trong $rec thì hàm sẽ khôngthực hiện: MA KH TEN CONG TY TEN KH <?php $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("northwind", $link); $sql="select * from customers"; $result=mysql_query($sql,$link); $i= mysql_num_rows($result); echo "tong so record : $i"; if ($i!=0) { while ($row=mysql_fetch_array($result)) { //lay gia tri tung field $makh= $row["CustomerID"]; $tenct=$row["CompanyName"]; $tenkh=$row["ContactName"]; echo "$makh"; echo "$tenct"; echo "$tenkh"; } } ?> <?php mysql_close($link); ?> BẠn cũng có thể đọc từng record bằng hàm mysql_fetch_row như sau : eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 59 MA KH TEN CONG TY TEN KH <?php $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("northwind", $link); $sql="select * from customers"; $result=mysql_query($sql,$link); $i= mysql_num_rows($result); echo "tong so record : $i"; if ($i!=0) { while ($row=mysql_fetch_row($result)) { //lay gia tri tung field $makh= $row[0]; $tenct=$row[1]; $tenkh=$row[2]; echo "$makh"; echo "$tenct"; echo "$tenkh"; } } ?> <?php mysql_close($link); ?> Bạn cũng có thể dùng hàm mysql_fetch_object để lấy từng record như sau : MA KH TEN CONG TY TEN KH <?php $link = mysql_connect ("localhost", "root", "") or die ("Could not connect to MySQL Database"); echo "connection ok!"; mysql_select_db("northwind", $link); $sql="select * from customers"; $result=mysql_query($sql,$link); $i= mysql_num_rows($result); echo "tong so record : $i"; if ($i!=0) { eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 60 while ($row=mysql_fetch_object($result)) { //lay gia tri tung field $makh= $row->CustomerID; $tenct=$row->CompanyName; $tenkh=$row->ContactName; echo "$makh"; echo "$tenct"; echo "$tenkh"; } } ?> <?php mysql_close($link); ?> VIII. Điều khiển session · Để khởi tạo 1 session trên trang web bạn dùng lệnh session_start(). · Để lấy id của 1 session hiện hành bạng dùng lệnh $myvalue=session_id(); · Để khai báo 1 biến session bạn dùng lệnh session_register("biến") <?php session_start(); $suid="admin"; $semail="admin@saigoninfotech.com"; $sfullname="Pham Huu Khang"; session_register("suid"); session_register("semail","sfullname"); ?> · Trên trang khác để lấy giá trị của biến session đã khai báo ban thực hiện <?php session_start(); echo "Userid: $suid."; echo "email: $semail."; echo "Fullname: $sfullname."; ?> · Để kiểm tra biến session nào còn hiệu lực hay không thì dùng lệnh session_is_registered · Để Hủy bỏ 1 biến session còn hiệu lực dùng lệnh session_unregister <?php session_start(); echo "Userid: $suid."; echo "email: $semail."; echo "Fullname: $sfullname."; $result=session_is_registered("suid"); if($result==1) { session_unregister("suid"); } ?> · Để xóa bỏ tất cả biến session còn hiệu lực dùng lệnh session_unset(), nếu bạn muốn kết thúc tất cả các biến session thì dùng lệnh session_destroy() <?php session_start(); eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 61 $id=""; if (session_is_registered("suid")) { $id=$suid; session_unset(); session_destroy(); } ?> IX. Điều khiển Cookie · Tạo mới 1 biến cookie dùng cú pháp : setcookie(“tên biến”,giá trị) <?php $myvalue="You are visited our site"; setcookie("intershop",$myvalue); ?> · Lấy giá trị của 1 biến cookie thực hiện như sau : <?php $myvalue=$HTTP_COOKIE_VARS["intershop"]; echo "Get cookie: ".$myvalue.""; ?> X. Truy vấn dữ liệu file trong PHP 1. Mở file Trong PHP để mở 1 file trên máy chủ bạn dùng hàm fopen có cu pháp sau : $biến=fopen(tên file với đầy đủ đuờng dẫn, chế độ mở file) Bảng chế độ mở file Mode Diễn giải r Mở file dưới dạng Read-only r+ Mở file dưới dạng Read-Write w Mở file dưới dạng Write-only w+ Mở file dưới dạng Write-Read. Nếu file này tồn tại, nội dung sẽ bị xóa, nếu file không tồn tại chúng sẽ được tạo ra a Mở file dưới dạng Append. Ghi dữ liệu từ phần cuối file trở đi, trong trường hợp file không tồn tại chúng sẽ được tạo ra a+ Mở file dưới dạng Append. Ghi dữ liệu từ đầu file trở đi, trong trường hợp file không tồn tại chúng sẽ được tạo ra <?php $f="c:\hopdong\\thanhly.txt"; $ft=fopen($f,"a"); ?> Bạn có thể mở file thông qua Ftp hay HTTP <?php $f="ftp://www.abc.com/listcard.txt"; $ft=fopen($f,"a"); $f=""; $ft=fopen($f,"a"); ?> Để kiểm tra việc mở file có được hay không ta dùng cơ chế bẫy lỗi bằng cách dùng dấu @ trước biến $f <?php eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 62 $f="c:\hopdong\\thanhly.txt"; @ $ft=fopen($f,"a"); if (!$ft) { echo "Your Orders could not process in this time"; echo "Please check your system and try again!"; } else echo "Open file ok!"; ?> 2. Đọc nội dung trên file · Để đọc nội dung trên 1 file bạn dùng hàm fgets(biến file, số ký tự) · Để biết được nội dung file đã hết hay chưa bạn dùng hàm feof(), hàm này cho giá trị true khi con trỏ đến cuối file. <?php $f="c:\hopdong\\thanhly.txt"; @ $ft=fopen($f,"r"); if(!$ft) { echo "No Orders Pending, Please try later!"; exit; } else { echo "Orders Processing"; while (!feof($ft)) { $order=fgets($ft,10); echo $order.""; } } echo "Read file successfull!"; ?> · Để đọc tòan bộ nội dung fiel bạn nên dùng hàm readfile() <?php $f="c:\hopdong\\thanhly.txt"; @ $order=readfile($f); if(!$order) { echo "No Orders Pending, Please try later!"; exit; } else { echo "Orders Processing"; echo $order; } echo "Read file successfull!"; ?> eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 63 3. Ghi dữ liệu vào file Muốn ghi file thì thư mục chưa các file cần ghi phải cấp quyền modify cho user Internet Guest Account. · Để ghi nội dung vào file bạn dùng hàm fwrite(biến file, nội dung) <?php $f="c:\hopdong\\thanhly.txt"; @ $ft=fopen($f,"a"); if (!$ft) { echo "Your Orders could not process in this time"; echo "Please check your system and try again!"; } else { $f="Your Orders have been write in this time"; fwrite($ft,$f); echo "Write to file successfull!"; } ?> · Khi ghi dữ liệu ra file bạn có thể dúng \t để nhảy tab hay \n để xuống hàng <?php $f="c:\hopdong\\thanhly.txt"; @ $ft=fopen($f,"a"); if (!$ft) { echo "Your Orders could not process in this time"; echo "Please check your system and try again!"; } else { $p=10; for($q=1;$q<=5;$q++) { $outstring=$q." bottle\t".$p; $outstring=$outstring. " vnd\t".$q*$p."\n"; fwrite($ft,$outstring); } echo "Write to file successfull!"; } ?> 4. Đóng file Sau khi mở file để đọc hay ghi bạn file đóng file lại bằng hàm fclose(biến file) . Hàm trả về true nếu đóng file thành công, còn không trả về false. 5. Kiểm tra file Khi mở file thông thường b5n nên kiểm tra xem file đó có tồn tại hay không bạn nên dùng hàm file_exists() <?php $f="c:\hopdong\\thanhly.txt"; //Kiem tra file if (!file_exists($f)) { eduFirst Giáo trình Lập trình ứng dụng Web với ngôn ngữ PHP 64 echo "No Orders Pending, Please try later!"; exit; } else { $order=readfile($f); echo "Orders Processing"; echo $order; } echo "Read file successfull!"; ?> 6. Kiểm tra dung lượng của file Khi mở file để biết được dung lượng của file đó bao nhiêu. Hàm filesize() cho biết tổng số byte của file cần mở. <?php $f="c:\hopdong\\thanhly.txt"; //Kiem tra file if (!file_exists($f)) { echo "No Orders Pending, Please try later!"; exit; } else { $size=filesize($f); echo "Size of Orders Processing "; echo "is $size byte(s)"; } ?> 7. Xóa file Để xó hẳn 1 file trên máy chủ bạn dùng unlink() với đầy đủ đường dẫn của file cần xóa. Tuy nhiên bạn nên kiển tra trước file đó có tồn tại hay không trườc rồi mới xóa. <?php $f="c:\hopdong\\thanhly.txt"; //Kiem tra file if (!file_exists($f)) { echo "No Orders Pending, "; echo "Please try later!"; exit; } else { $ok=unlink($f); if ($ok) echo "File have been deleted!"; else echo "File could not delete!"; } ?>
File đính kèm:
- giao_trinh_lap_trinh_ung_dung_web_voi_ngon_ngu_php.pdf